Курс по 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. Вижте 📖 документацията за повече подробности.

Навигация по курса

Числа / Операции с числа   |   Диапазони

Тази страница е автоматично преведена с ChatGPT 4.0. Оригинален текст на английски

Преводи на тази страница: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська