Курс 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