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

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

   sub      charta situs       nota LXXVI <<     >> nota LXXVIII   

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