41. Передача именованных аргументов в Perl 6

Функции (и методы классов) в 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s