Per salvare 2 valori da una lista restituita da un sub e lanciare il terzo, si può;Perché l'assegnazione a un elenco di variabili è incoerente?
(my $first, my $second) = (1, 2, 3);
print $first, "\n";
print $second, "\n";
exit 0;
e funziona come previsto (in perl5 e perl6). Se vuoi solo il primo però;
(my $first) = (1, 2, 3);
print $first, "\n";
exit 0;
... si ottiene l'intera lista. Questo sembra contro-intuitivo - perché l'incoerenza?
non ho ben capito il motivo per cui il mio '($ prima) = 1,2,3'; * fa * funziona come previsto. Non dovrebbe valere anche il singolo argomento? In altre parole, come è diverso da '(my $ first) = 1,2,3;' o 'my $ prima; ($ prima) = 1,2,3; '? – mscha
@mscha: i parenti sono sintatticamente sovraccaricati: sono usati come parte della sintassi delle dichiarazioni e delimitano liste ordinarie (che possono contenere oggetti che sono assegnabili); sintatticamente potrebbe sembrare simile, ma semanticamente, mele e arance – Christoph
@mscha: per coerenza, sarebbe stata una buona idea rendere uguali le regole, ma notare che la semantica delle liste si è evoluta durante il piuttosto lungo processo di sviluppo di Perl6 – Christoph