Курс языка программирования Raku / Основы / Основы переменных и типов данных / Булев тип / Exercises / Тройная инверсия
Решение: Тройная инверсия
Программа в задании не будет компилироваться и требует небольшого
исправления. Ниже правильный работающий вариант программы (добавлен
пробел, чтобы разделить ! и !!).
Код
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). В документации 📖 вы
найдете больше.