Курс языка программирования Raku / Продвинутый уровень / Операторы / Трейты и прагмы / Exercises / Изменяемый параметр
Решение: Изменяемый параметр
Вот возможное решение задачи.
Код
sub double($n is rw) {
$n *= 2;
}
my $score = 21;
double($score);
say $score;🦋 Исходный код можно найти в файле writable-parameter.raku.
Вывод
42Комментарии
is rwпривязывает параметр$nк переменной вызывающей стороны$score, поэтому$n *= 2внутриdoubleизменяет сам$score— вот почему выводится42.Без
is rwпараметр был бы доступен только для чтения, и$n *= 2вызвало бы ошибку компиляции. Если бы вместо этого использовалсяis copy,doubleполучил бы приватную копию для изменения, а$scoreостался бы равным21.