52 votes

Quelle est la différence entre le parent et la base de Perl 5?

Il semble y avoir une nouvelle pragma nommé parent qui n'a à peu près la même chose que base. Qu'est - parent faire de bons de souscription d'un nouveau (non-core) module? Je suis en manque de quelque chose?

55voto

ysth Points 54757

base essayé d'en faire un trop grand nombre de choses - gérer automatiquement le chargement des modules, mais aussi permettant d'établir l'héritage de classes déjà chargé (éventuellement à partir d'un fichier dont le nom n'était pas basé sur le nom du module). De faire en sorte de le faire fonctionner, il y a quelques hackery qui a causé des résultats surprenants dans certains cas. Plutôt que de rompre la compatibilité descendante, une nouvelle, remplacement pragma "parent" a été introduit avec la propre sémantique.

parent sera un module de base de 5.10.1.

Mise à jour: vous avez oublié que la base de poignées de champs (si vous utilisez les champs pragma), le parent qui n'a pas faire.

43voto

Chas. Owens Points 40887

Armé avec le bit supplémentaire de l'information à partir de ysth, j'ai été en mesure de voir les différences dans les docs:

L' base pragma fait les choses suivantes:

  • ajoute le paquet nommé à l' @ISA
  • charge le module avec le même nom que le nom du package à l'aide de require (sauf si elle détecte que le paquet a déjà été chargé)
  • ne pas échouer si un module avec le même nom que le package n'existe pas
  • meurt si il n'y a pas de symboles dans le paquet nommé
  • si $VERSION n'existe pas dans le paquet nommé, base définit "-1, set by base.pm"
  • initialise l' fields du paquet nommé, si elles existent
  • n'appelle pas la fonction d'importation du package nommé

L' parent pragma fait les choses suivantes:

  • ajoute le paquet nommé à l' @ISA
  • charge le module avec le même nom que le nom du package à l'aide de require
  • accepte une option qui permet de ne pas mourir si un module avec le même nom que le package n'existe pas

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X