
nota LXXVII. Именованные параметры рутины
Мы можем ограничить себя от возможных ошибок, связанных с перепутанными параметрами рутины, однозначно определив, что вызывать рутину можно только назвав ее параметры по именам, а не просто перечислив их. Для этого применим двоеточие.| | #!/usr/bin/perl6
potiones('1.X.2010',thea=>'с бегемотом');
potiones(thea=>'со слоном','2.X.2010');
potiones('3.X.2010',limonada=>'Буратино',coffea=>'С цикорием',sucus=>'Мультиовощ');
# potiones('4.X.2010','водка','Колокольчик'); # так нельзя, потому что
# ожидается только один позиционный параметр (дата)
# остальные - строго именованные
sub potiones($datum,:$spiritus,:$limonada,:$thea,:$coffea,:$sucus) {
# всё кроме даты - факультативно
say "МЕНЮ напитков на $datum
Спиртное: $spiritus
Лимонад: $limonada
Чай: $thea
Кофе: $coffea
Сок: $sucus
-----------------------
"
} | | МЕНЮ напитков на 1.X.2010
Спиртное:
Лимонад:
Чай: с бегемотом
Кофе:
Сок:
-----------------------
МЕНЮ напитков на 2.X.2010
Спиртное:
Лимонад:
Чай: со слоном
Кофе:
Сок:
-----------------------
МЕНЮ напитков на 3.X.2010
Спиртное:
Лимонад: Буратино
Чай:
Кофе: С цикорием
Сок: Мультиовощ
-----------------------
|
'Any()' не очень хорошо вписывается. Поэтому чуть меняем.| | #!/usr/bin/perl6
potiones('1.X.2010',thea=>'с бегемотом');
potiones(thea=>'со слоном','2.X.2010');
potiones('3.X.2010',limonada=>'Буратино',coffea=>'С цикорием',sucus=>'Мультиовощ');
sub potiones($datum,:$spiritus is copy,:$limonada is copy,
:$thea is copy,:$coffea is copy,:$sucus is copy) {
# всё кроме даты - факультативно и теперь меняемо
for $spiritus,$limonada,$thea,$coffea,$sucus {$_ or $_='-'}
say "МЕНЮ напитков на $datum
Спиртное: $spiritus
Лимонад: $limonada
Чай: $thea
Кофе: $coffea
Сок: $sucus
-----------------------
"
} | | МЕНЮ напитков на 1.X.2010
Спиртное: -
Лимонад: -
Чай: с бегемотом
Кофе: -
Сок: -
-----------------------
МЕНЮ напитков на 2.X.2010
Спиртное: -
Лимонад: -
Чай: со слоном
Кофе: -
Сок: -
-----------------------
МЕНЮ напитков на 3.X.2010
Спиртное: -
Лимонад: Буратино
Чай: -
Кофе: С цикорием
Сок: Мультиовощ
-----------------------
|
Теперь хорошо. # mutatio postrema: 22 Sep 2010
|