
given
Ещё одно очень удобное нововведение, облегчающее сопоставление какой-то переменной с образцами. Речь идёт о паре 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
|