Курс языка программирования Raku / Основы / Скалярные переменные / Упражнения / Замена значений

Решение: Замена значений

В этой программы мы используем элементы синтаксиса Raku из прошлой главы о скалярных переменных.

Код

my ($a, $b) = 10, 20;
($a, $b) = $b, $a;
say "$a, $b";

🦋 Вы можете найти исходный код в файле swap.raku.

Вывод

Запустите программу, чтобы убедиться, что она печатает значения в правильном порядке.

$ raku exercises/scalar-variables/swap.raku
20, 10

Комментарии

Все шаги этой программы (создание переменных и присвоение им значений, их замена, вывод) используют обе переменные в одной инструкции. Самое интересное, это когда переменные обмениваются значениями:

($a, $b) = $b, $a;

Скобки обязательны с левой стороны, но вы также можете их добавить с правой:

($a, $b) = ($b, $a);

Что случится, если мы уберем скобки?

$a, $b = $b, $a;

В этом случае вы получите предупреждение, что $a с правой стороны не используется:

$ raku exercises/scalar-variables/swap.raku
WARNINGS for /Users/ash/raku-course/exercises/scalar-variables/swap.raku:
Useless use of $a in sink context (lines 2, 2)
10, 20

На самом деле строка выше эквивалентна бесполезному присваиванию $b = $b. Это легко увидеть, если вы измените значение с правой стороны, например:

$a, $b = 2 * $b, 3 * $a;

Программа напишет еще больше предупреждений, но вы также увидите, что только $b изменило свое значение:

$ raku exercises/scalar-variables/swap.raku
WARNINGS for /Users/ash/raku-course/exercises/scalar-variables/swap.raku:
Useless use of "*" in expression "3 * $a" in sink context (line 2)
Useless use of $a in sink context (line 2)
10, 40

Следующее упражнение

💪 Исправьте идентификаторы

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

Комментарии / Вложенные комментарии   |   Строки

Эта страница переведена с английского человеком. Оригинальный текст на английском языке. О переводе.

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