Frage

Es erscheint eine neue Pragma namens parent werden, die in etwa tut das gleiche wie base . Was bedeutet parent zu tun, garantiert eine neue (Non-Core-Modul)? Ich bin etwas fehlt?

War es hilfreich?

Lösung

base versuchte man zu viele Dinge zu tun - Handhabung automatisch Module Laden sondern ermöglichen auch bereits geladen von Klassen Vererbung Gründung (möglicherweise aus einer Namensdatei das wurde auf dem Modulnamen nicht basiert). So sortieren es funktioniert, es gab einige Hacks, die überraschende Ergebnisse in einigen Fällen verursacht. Anstatt die Abwärtskompatibilität zu brechen, ein neuer, Ersatz Pragma parent mit sauberen Semantik eingeführt wurde.

parent wird ein Kernmodul ab 5.10.1 sein.

Update:. vergessen, dass base Griffe fields (wenn Sie die fields Pragma verwenden), der parent tut nicht

Andere Tipps

mit dem Extra an Information aus ysth Bewaffnete, ich war in der Lage, die Unterschiede in der Dokumentation zu sehen:

Die base Pragma führt die folgenden Dinge:

  • fügt den Namen Paket @ISA
  • lädt das Modul mit dem gleichen Namen wie die Namen versehenes Paket mit require (es sei denn, es erkennt, dass hat das Paket bereits geladen worden ist)
  • wird nicht fehlschlagen, wenn ein Modul mit dem gleichen Namen wie das Paket nicht vorhanden ist
  • stirbt, wenn es keine Symbole in der genannten Verpackung sind
  • wenn $VERSION nicht in dem Namen Paket nicht vorhanden ist, Basis setzt es auf "-1, set by base.pm"
  • initialisiert der fields der genannten Paket, wenn sie vorhanden sind
  • ruft nicht die Importfunktion des benannten Paket

Die parent Pragma führt die folgenden Dinge:

  • fügt den Namen Paket @ISA
  • lädt das Modul mit dem gleichen Namen wie das genannten Paket mit require
  • akzeptiert eine Option, die es nicht zu sterben, wenn ein Modul mit dem gleichen Namen wie das Paket nicht existiert sagt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top