Was ist der Unterschied zwischen Eltern und Base in Perl 5?
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