Continuo a vedere ->
nel codice e non sono esattamente sicuro di cosa significhi. Ad esempio:Cosa fa la freccia -> in Perl?
@top_links = @{$m->links};
Cosa fa questa linea? Inoltre, dove posso leggere a riguardo?
Continuo a vedere ->
nel codice e non sono esattamente sicuro di cosa significhi. Ad esempio:Cosa fa la freccia -> in Perl?
@top_links = @{$m->links};
Cosa fa questa linea? Inoltre, dove posso leggere a riguardo?
Vedi The Arrow Operator in perlop:
"
->
" è un operatore infisso dereferenziare, così come è in C e C++. Se il lato destro è uno[...]
,{...}
o un indice(...)
, il lato sinistro deve essere un riferimento rigido o simbolico a un array, un hash o una subroutine rispettivamente. (O tecnicamente parlando, una posizione in grado di contenere un riferimento difficile, se si tratta di un array o di un riferimento hash utilizzato per l'assegnazione.) Vedere perlreftut e perlref.Altrimenti, il lato destro è un nome di metodo o una semplice variabile scalare che contiene il nome del metodo o un riferimento di subroutine e il lato sinistro deve essere un oggetto (un riferimento benedetto) o un nome di classe (cioè, un nome di pacchetto). Vedi perlobj.
La @{}
parte esterna è un dereference - questo implica $m->links
è un riferimento ad un array, quindi questo operatore deferences per riferirsi alla matrice direttamente, che viene poi copiato @top_links
Capitolo 8 del 'Camel Book' è un buon posto per conoscere i riferimenti, o la sezione perlref della documentazione Perl.
L'operatore di freccia ->
è un oggetto di riferimento, in questo caso il recupero dell'oggetto dell'oggetto $m
. Allo stesso modo, i capitoli successivi del Camel Book trattano dettagliatamente il supporto orientato agli oggetti di Perl. Vedere anche la sezione perlobj della documentazione Perl.
In generale, ->
suggerimenti su dereferenziazione. Questa sintassi proviene da C.
Nel proprio esempio, indica chiamata metodo: metodo chiamata links
dall'istanza dell'oggetto in $m
. Questo è spiegato nel capitolo Oggetti in Modern Perl. Pezzi di perlsub, perlfaq7, perlobj, perltoot fornire i dettagli.
Per i riferimenti in generale, search Stack Overflow; è un argomento ricorrente.
Perl operatore della freccia ha un altro uso:
Aula> metodo richiama il metodo subroutine in Class pacchetto
anche se è completamente diverso da quello del codice di esempio. Includere solo per completezza la domanda nel titolo.
La penultima riga è un po 'fuorviante. Se lo scalare sul lato destro della freccia è un codice ref, non importa affatto quale sia il lato sinistro.Con 'my $ say_array = sub {print" @ {$ _ [0]} \ n "};' puoi quindi scrivere linee come '[1, 2, 3] -> $ say_array;' che stampa '1 2 3 ' –
Potremmo menzionare che è simile all'operatore punto in molti altri linguaggi come Python, Java, Javascript, ecc. –
@Eric Strom: mi sembra un bug – ysth