-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


Funzioni Perl in italiano

indietro

  • our ESPR
  • our ESPR TIPO
  • our ESPR : ATTRIBUTI
  • our TIPO ESPR : ATTRIBUTI

    our associa un nome elementare con una variabile di package nel corrente package per usarla all'itenro dello scope corrente. Quando è in vigore use strict 'vars', our vi permette di dichiarare variabili globali senza qualificarle con i nomi dei package, all'interno dello scope lessicale della dichiarazione our. Così our differisce da "use vars", il cui scope è a livello di package

    A differenza di my, che alloca sia dello spazio per una variabile sia associa un nome elementare con quello spazio per un suo uso all'interno dello scope corrente, our associa un nome elementare con una variabile di package nel package corrente, per un suo uso all'interno dello scope corrente. In altre parole, our ha le stesse regole di scope di my, ma non crea necessariamente una variabile.

    Se è indicato più di un valore, la lista deve essere inclusa tra parentesi.

        our $pippo;
        our($pluto, $paperino);

    Un dichiarazione our dichiara una variabile globale che sarà visibile su tutto il suo scope lessicale, persino attraverso i limiti di un package. Il package in cui la variabile viene inserita è determinato al momento della dichiarazione, non al momento dell'uso. Ciò significa che è valido il seguente comportamento:

        package Pippo;
        our $pluto;		# dichiara $Pippo::pluto per il resto dello scope lessicale
        $pluto = 20;
        package Pluto;
        print $pluto;	# stampa 20, visto che si riferisce a $Pippo::pluto

    Sono permesse multiple dichiarazioni our con lo stesso nome all'interno dello stesso scope lessicale, se si trovano all'interno di differenti package. Se si trovano nello stesso package, Perl genererà degli avvertimenti solo se li avete richiesti, proprio come delle multiple dichiarazioni di my. Diversamente da una seconda dichiarazione my, che legherà il nome ad una nuova variabile, una seconda dichiarazione our nello stesso package, nello stesso scope, è solamente ridondante.

        use warnings;
        package Pippo;
        our $pluto;		# dichiara $Pippo::pluto per il resto dello scope lessicale
        $pluto = 20;
        package Pluto;
        our $pluto = 30;	# dichiara $Pluto::pluto per il resto dello scope lessicale
        print $pluto;	# stampa 30
        our $pluto;		# genera un warning ma non ha altri effetti
        print $pluto;	# stampa ancora 30

    Una dichiarazione our può anche avere una lista di attributi associata ad essa.

    Le semantiche esatte e l'interfaccia di TIPO ed ATTRIBUTI sono ancora in evoluzione. TIPO è al momento legato all'uso della direttiva fields, a gli attributi sono gestiti utilizzando la direttiva attributes o, a partire da Perl 5.8.0, anche tramite il modulo Attribute::Handlers. Consultate perlsub/"Private Variables via my()" ["Variabili private tramite my()", NdT] per i dettagli e fields, attributes e Attribute::Handlers.

    Il solo attributo per our() attualmente riconosciuto è unique, che indica che una singola copia del globale deve essere utilizzata da tutti gli interpreti nel caso il programma stia girando in un ambiente multi-interprete. (Il comportamento predefinito prevede che ogni interprete abbia la sua copia del globale). Esempi:

        our @EXPORT : unique = qw(pippo);
        our %EXPORT_TAGS : unique = (pluto => [qw(aa bb cc)]);
        our $VERSION : unique = "1.00";

    Va notato che questo attributo ha anche l'effetto di far sì che il globale diventi in sola lettura quando il primo nuovo interprete viene clonato (per esempio, quando viene creato il primo nuovo thread).

    Gli ambienti multi interprete possono esistere tramite l'emulazione di fork() sotto Windows, o incapsulando perl in un'applicazione multi-threaded. L'attributo unique non fa nulla in tutti gli altri ambienti.

    Attenzione: l'attuale implementazione di questo attributo opera sui typeglob associati con la variabile; questo significa che our $x : unique ha anche l'effetto di our @x : unique; our %x : unique. Questo potrebbe essere soggetto a cambiamenti.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google