Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Упорядоченные контейнеры / Exercises / Свяжите скаляр

Решение: Свяжите скаляр

Вот один из возможных вариантов решения задачи.

Код

my $source = 1;
my $bound := $source;
my $copy = $source;

$source = 9;
say $bound;
say $copy;

🦋 Исходный код можно найти в файле bind-a-scalar.raku.

Вывод

9
1

Комментарии

  1. Связывание через := делает $bound ещё одним именем того же контейнера, что и $source, а не его копией. Поэтому изменение $source видно через $bound, и он печатает 9.

  2. Обычное присваивание через = копирует значение в отдельный контейнер, поэтому позднейшее изменение на $copy не влияет, и он по-прежнему печатает 1.

  3. Увидеть их рядом — и есть весь смысл: := разделяет контейнер, а = дублирует значение.

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

Свяжите скаляр   |   Контексты