Курс языка программирования Raku / Основы / Булев тип / Упражнения / Тройная инверсия
Решение: Тройная инверсия
Программа в задании не будет компилироваться и требует небольшого
исправления. Ниже правильный работающий вариант программы (добавлен пробел,
чтобы разделить !
и !!
).
Код
my $value = False;
say ! !!$value;
🦋 Вы можете найти исходный код в файле triple-negation.raku.
Вывод
Программа выводит противоположное булево значение, как вы наверное и ожидали:
$ raku triple-negation.raku
True
Комментарии
Было немного неожиданно, что программа с тремя восклицательными знаками отказывалась компилироваться:
$ raku triple-negation.raku
===SORRY!=== Error while compiling /Users/ash/raku-course/exercises/booleans/triple-negation.raku
Two terms in a row
at /Users/ash/raku-course/exercises/booleans/triple-negation.raku:2
------> say !!!⏏$value;
expecting any of:
infix
infix stopper
postfix
statement end
statement modifier
statement modifier loop
Дополнительный пробел решил проблему. Но не попадитесь в другую ловушку. Взгляните на следующую программу:
my $value = False;
say !!! $value;
Эта программа компилируется, но прекращается со следующим сообщением:
$ raku triple-negation.raku
False
in block <unit> at exercises/booleans/triple-negation.raku line 2
Так происходит, потому что !!!
является специальным оператором, чтобы пометить
часть кода как заглушку. Если программа достигнет этого момента, она завершится
и выведет сообщение (в нашем случае это текущее значение переменной
$value
). В документации 📖 вы найдете
больше.
Навигация по курсу
← Числа / Операции с числами | Интервалы →
Эта страница переведена с английского человеком. Оригинальный текст на английском языке. О переводе.
Переводы этой страницы: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська