
nota LXXII. Передаем рутине массив
Каким образом можно передать рутине массив?| | #!/usr/bin/perl6
my @list=<одна муха меня совсем уже заела>;
routine(@list);
@list.&routine; # ну или так
sub routine(@words) {
@words».say;
} | | меня
уже
муха
одна
заела
совсем
уже
одна
заела
меня
совсем
муха |
Понятно. А если передать не массив, а два массива? Хэш? Скаляр?| | #!/usr/bin/perl6
my @list=<decem viginti triginta>;
my @list2=<quadraginta quinquaginta sexaginta>;
# routine(@list,@list2); # ошибка "..., а ожидался один"
my %hash=<десять decem шестьдесят sexaginta>;
# routine(%hash); # ошибка "..., а получила хэш"
my $text='Aquila non captat muscas';
# routine($text); # ошибка "..., а дали строку"
routine(<1 2 3 4 5>);
# routine(6,7,8,9,10); # ошибка "ну что вы опять мне дали!"
sub routine(@words) {
@words».say;
} | | 3
2
1
4
5 |
Если определили, что рутина валентна одним массивом, то ровно один массив и можно дать. Ну или на худой конец список <1 2 3 4 5>, который суть один объект. (6,7,8,9,10) - пять объектов. Если надо передавать два массива, то так и пишем:| | #!/usr/bin/perl6
my @list=<decem viginti triginta>;
my @list2=<quadraginta quinquaginta sexaginta>;
routine(@list,@list2);
sub routine(@l1,@l2) {
@l1».say;
'---------'.say;
@l2».say;
} | | viginti
decem
triginta
---------
quinquaginta
quadraginta
sexaginta |
Bene. # mutatio postrema: 18 Sep 2010
|