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

when


       Ещё одно очень удобное нововведение, облегчающее сопоставление какой-то переменной с образцами. Речь идёт о паре given и when.
    
#!/usr/bin/perl6
my $abc='Duo';
given $abc {
	when 'Unus' {1.say}
	when 'Duo' {2.say}
	when 'Tres' {3.say}
	}
2

       Это легче, чем каждый раз говорить if ($abc eq 'Unus') {} и так далее. И более наглядно.
       Для "всех остальных случаев" имеется default:
    
#!/usr/bin/perl6
my $abc='Дывытнадцать';
given $abc {
	when 'Unus' {1.say}
	when 'Duo' {2.say}
	when 'Tres' {3.say}
	default {"$abc non numerus est".say}
	}
Дывытнадцать non numerus est

       Bene. Место default в блоке значение ИМЕЕТ:
    
#!/usr/bin/perl6
my $abc='Tres';
given $abc {
	when 'Unus' {1.say}
	when 'Duo' {2.say}
	when 'Tres' {3.say}
	default {"$abc non numerus est".say}
	}
given $abc {
	default {"$abc non numerus est".say}
	when 'Unus' {1.say}
	when 'Duo' {2.say}
	when 'Tres' {3.say}
	}
3
Tres non numerus est

       Надо не забывать про это обстоятельство. Зря, конечно, так сделали. Ну да ладно.
       Работает конструкция до первого совпадения. Потом сравнение прекращается.
    
#!/usr/bin/perl6
my $num=9;
given $num {
	when $_ < 10 {'< 10'.say}
	when $_ == 10 {'= 10'.say}
	when $_ > 10 {'> 10'.say}
	when 9 {9.say}
	}
< 10

       Bene.
# mutatio postrema: 10 Aug 2010

   default, given, when      charta situs       nota VII   

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