perl6.suОсвоим perl6 к 2015 году!

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;
	}
5
3
1
4
2

       Если определили, что рутина валентна одним массивом, то ровно один массив и можно дать. Ну или на худой конец список <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;
	}
triginta
decem
viginti
---------
sexaginta
quadraginta
quinquaginta

       Bene.
# mutatio postrema: 18 Sep 2010

   sub      charta situs       nota LXXI <<     >> nota LXXIII   

    RSS     stdin@perl6.su    © Alexius Karmanov, 2010-2011