Domanda

Sembra che ci sia un nuovo nome pragma parent che fa più o meno la stessa cosa di base . Che cosa significa fare parent che garantisce un nuovo modulo (non-core)? Mi manca qualcosa?

È stato utile?

Soluzione

base cercato di fare troppe cose - movimentazione automaticamente il caricamento dei moduli, ma anche consentono di stabilire l'eredità dalle classi già caricate (possibilmente da un file il cui nome non è stato in base al nome del modulo). Per una sorta di farlo funzionare, c'era qualche hackery che ha causato risultati sorprendenti in alcuni casi. Invece di interrompere la retrocompatibilità, un pragma parent nuova, la sostituzione è stata introdotta con la semantica più puliti.

parent sarà un modulo core di 5.10.1.

Aggiornamento:. ha dimenticato che base gestisce fields (se si utilizza il pragma fields), che parent non fa

Altri suggerimenti

Armati con l'extra po 'di informazioni da ysth, sono stato in grado di vedere le differenze nei documenti:

Il base pragma fa le seguenti cose:

  • aggiunge il pacchetto chiamato a @ISA
  • carica il modulo con lo stesso nome del pacchetto chiamato utilizzando require (a meno che non rileva che il pacchetto è già stato caricato)
  • non mancherà se un modulo con lo stesso nome del pacchetto non esiste
  • muore se non ci sono simboli nel pacchetto chiamato
  • se $VERSION non esiste nel pacchetto chiamato, base fissa a "-1, set by base.pm"
  • fields del pacchetto chiamato se esistono
  • non chiama la funzione di importazione del pacchetto di nome

Il parent pragma fa le seguenti cose:

  • aggiunge il pacchetto chiamato a @ISA
  • carica il modulo con lo stesso nome del pacchetto chiamato utilizzando require
  • accetta un'opzione che dice di non morire se un modulo con lo stesso nome del pacchetto non esiste
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top