Курс Раку / Основи / Створення та виклик функцій

Іменовані параметри

На відміну від позиційних параметрів, іменовані параметри посилаються за їхніми іменами.

Наступна функція приймає два параметри, які називаються $from і $to.

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

Тепер, щоб викликати функцію, потрібно назвати аргументи:

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

Помилкою буде передавати аргументи так, ніби вони позиційні. Наприклад, виклик distance(30, 10) створює помилку:

Занадто багато позиційних аргументів; очікувалося 0 аргументів, але отримано 2
    в підпрограмі 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 4o. Оригінальний текст англійською мовою.

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