Курс по Raku / Напреднали / Оператори / Трейтове и прагми 🆕 / Exercises / Записваем параметър

Решение: Записваем параметър

Ето едно възможно решение на задачата.

Код

sub double($n is rw) {
    $n *= 2;
}

my $score = 21;
double($score);
say $score;

🦋 Можете да намерите изходния код във файла writable-parameter.raku.

Изход

42

Коментари

  1. is rw свързва параметъра $n с променливата на извикващия $score, така че $n *= 2 вътре в double променя самата $score — затова се отпечатва 42.

  2. Без is rw параметърът би бил само за четене и $n *= 2 би била грешка при компилация. Маркирането с is copy вместо това би дало на double частно копие за промяна, оставяйки $score непроменена на 21.

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

Записваем параметър   |   Потребителски трейт