Чтобы сохранить 2 значения из списка, возвращаемого sub, и выбросить третий, можно;Почему присвоение списка переменных несовместимо?
(my $first, my $second) = (1, 2, 3);
print $first, "\n";
print $second, "\n";
exit 0;
и работает как ожидается (как в perl5, так и perl6). Если вы хотите только первого,
(my $first) = (1, 2, 3);
print $first, "\n";
exit 0;
... вы получаете весь список. Это кажется противоречивым - почему непоследовательность?
Я не совсем понимаю, почему «my ($ first) = 1,2,3'; *. * работа по назначению. Не следует ли применять один аргумент? Другими словами, как это отличается от '(my $ first) = 1,2,3;' или 'my $ first; ($ first) = 1,2,3; '? – mscha
@mscha: parens синтаксически перегружены: они используются как часть синтаксиса объявления, а также для разграничения обычных списков (которые могут содержать вещи, которые можно присваивать); синтаксически это может выглядеть похоже, но семантически, яблоки и апельсины – Christoph
@mscha: для согласованности было бы неплохо сделать так же правила, но обратите внимание, что семантика списка эволюционировала во время довольно продолжительного процесса разработки Perl6 – Christoph