Курс языка программирования 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: Сравнение строк   |   Тернарный оператор