Функции (и методы классов) в Perl 6 способны принимать именованные параметры. Простейший способ — разделить имя и значения стрелкой:
sub f(:$a, :$b) { $a ** $b } say f(a => 2, b => 3); # 8
Но возможен и другой синтаксис, с помощью двоеточия. Существует несколько основных разновидностей.
:key(value)
Все начинается с двоеточия, а значения стоят в скобках:
say f(:a(2), :b(3));
Вместо круглых скобок допустимы, например, угловые:
say f(:a<2>, :b<3>);
:Nkey
Для целочисленных величин предусмотрен еще вот такой странный синтаксис:
say f(:2a, :3b);
:key и :!key
Если именованные параметры используются как флаги, то значения указывать не обязательно. В этом случае передать True и False можно следующим образом:
sub g(:$key) { $key } say g(:key); # True say g(:!key); # False
Пары
Фактически, все показанные варианты создают пары ключ — значение, поэтому таким же образом можно поступить при создании хешей, например:
my %data = :alpha(10), :beta(20), :gamma(30); say %data<beta>; # 20