2011-12-23 15 views
18

Oggi ho riscontrato un problema che mi ha richiesto di determinare l'indice massimo di un array in perl. Ho usato per fare in questo modo:Come funzionano insieme dollaro e numero in perl?

my @array = (1, 2, 3); 
print $array[@array - 1]; 

Ma oggi ho inciampato su questo codice:

my @array = (1, 2, 3); 
print $array[$#array]; 

io non ho trovato nulla su tale questione nella documentazione. Che cosa è esattamente il costrutto $#? È un operatore? E come funziona, è più veloce del primo pezzo di codice? Restituisce sempre l'indice di array massimo? E 'deprecato o no?

So che ci sono molte domande, ma possono essere riassunte tutte da una, ed è quello che voglio veramente sapere: Come funziona?

+0

È proprio come csh – sidyll

+4

'$ # array' ti dirà il numero dell'ultimo indice, ma se vuoi solo ottenere l'ultimo elemento (e non ti interessa il suo indice reale) è molto più facile da usare '$ array [-1]' – friedo

+1

Domanda correlata: http://stackoverflow.com/questions/2997042/where-is-the-documentation-for – Zaid

risposta

22

Questo è documentato in perldoc perldata, section "Scalar Values". In breve, $#array è l'ultimo indice di @array. Per quanto riguarda il modo in cui funziona, è un po 'come un operatore, ma solo quanto $ e @ sono operatori. Pensalo come una sintassi speciale. L'ultimo indice di un array capita semplicemente "avere un nome". È una variabile da cui puoi leggere e assegnare.

6

L'uso è menzionato nel primo esempio in perldata. Indica l'indice dell'ultimo elemento nell'array.

Btw, è anche possibile utilizzare

$array[-1] 

per arrivare all'ultimo elemento.

Problemi correlati