Курс Raku / Основи / Основи порядку виконання / Умовні перевірки / Порівняння рядків

Тест 2 — умова в if*

Виправте програму й дайте відповідь на запитання.

.my $password = prompt 'Enter your password: ';
.
eq =if $password ␣␣ '*&(#&$#Y' {
.    say 'Correct';
.}
.else {
.    say 'Incorrect';
.}

Що робить ця програма, якщо в перевірці стоїть =?

Завжди виводить ‘Correct’Ваша відповідь:  (: Завжди виводить ‘Correct’, Завжди виводить ’Incorrect’, Виводить ’Correct’ для правильних паролів і ‘Incorrect’ для неправильних, Виводить ’Incorrect’ для правильних паролів і ’Correct’ для неправильних :)
Програма завжди виводить ’Correct’, бо $password = ’*&(#&$#Y’ — це присвоєння, яке встановлює нове значення змінної $password. Оскільки це значення не є ані нулем, ані порожнім рядком, воно вважається True. Пароль, який вводить користувач, у цьому разі не перевіряється взагалі.

Якщо ж набрати ==, програма зламається, бо намагатиметься перетворити рядки (пароль користувача та правильний пароль) на числа й зазнає невдачі.

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

Тест 1 — Порівняння рядків   |   Тернарний оператор