Курс Raku / Розширені / Оператори / Трейти та прагми 🆕 / Вправи / Параметр для запису

Розв’язання: Параметр для запису

Ось один із можливих варіантів розв’язання задачі.

Код

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.

Навігація курсом

Параметр для запису   |   Власний трейт