Курс по Raku / Основи / Създаване и извикване на функции

Именувани параметри

За разлика от позиционните параметри, именуваните параметри се отнасят по техните имена.

Следната функция приема два параметъра, наречени $from и $to.

sub distance(:$from, :$to) { $from - $to }

Сега, за да извикате функцията, трябва да именувате аргументите:

say distance(from => 30, to => 10); # 20

Грешка е да предадете аргументите, сякаш са позиционни. Например, извикването distance(30, 10) генерира грешка:

Прекалено много позиционни аргументи; очаквани 0 аргумента, но получени 2
    в sub distance на ред 1 в t.raku
    в блок <unit> на ред 2 в t.raku

Добрата част е, че именуваните аргументи могат да бъдат изброени в произволен ред. Следните две извиквания са напълно еквивалентни:

say distance(from => 30, to => 10); # 20

say distance(to => 10, from => 30); # 20

Предаване на променливи

Когато стойността, която искате да предадете на функция, се съхранява в променлива, чието име съвпада с името на параметъра, можете да използвате специален синтаксис, който намалява писането:

my $from = 30;
my $to = 10;
say distance(:$from, :$to); # 20

Това е подобно на по-дълго извикване:

say distance(from => $from, to => $to); # 20

Отново, редът тук не е строг:

say distance(:$to, :$from); # 20

Ако името на променливата се различава от името на параметъра, използвайте един от начините за предаване на двойка:

my $a = 20;
my $b = 10;

say distance(from => $a, to => $b);

# или:

say distance(:from($a), :to($b));

Практика

Попълнете тестовете, които обхващат съдържанието на тази тема.

Навигация по курса

Създаване и извикване на функции / Позиционни параметри   |   Създаване и извикване на функции / Стойности по подразбиране


💪 Or jump directly to the exercises to this section.

Тази страница е автоматично преведена с ChatGPT 4.0. Оригинален текст на английски

Преводи на тази страница: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська