?? "?" == "??" ? !!?? : !!!??

?? "?" == "??" ? !!?? : !!!??


лоооол жпег

Что это за символы? Какие-то знаки вопроса и восклицания. На деле всё не так уж и трудно, как кажется. Верным ответом будет true. Давайте рассмотрим этот код поближе

Первым делом хочется заметить, что это синтаксис языка руби, однако, это можно транслировать и в синтаксис других языков (пайтон, эликсир, шарп и тд), используя их собственные методы и функции. Задачу я полностью взял из головы, так что так даже интересней.

Что самое главное, что мы должны заметить – двоеточие и вопросительный знак, из чего следует вывод, что это тернарный оператор [1]. Так как ответ будет true, то замеченный синтаксис не оставляет в этом никаких сомнений. Зная, что мы нашли тернарный оператор, задачу можно расписать иначе, используя уже непосредственно оператор ветвления:

ветки дот пнг

Теперь всё встаёт на свои места. Видим условие после ключевого слова if: "если ?? "?" равно "??", то выполняем !!??, в противном случае – !!!??". Особо это нам ничего не даёт, так как в коде, помимо знаков вопроса и восклицания, ничего нет. Разберёмся получше; во многих языках программирования существует оператор отрицания ! (читается как bang, либо bang bang, если !!), а также булевый оператор ?, который, как бы невзначай, отвечает на вопрос либо "да", либо "нет" [2], но в нашем случае один из вопросительных знаков это не булевый оператор, а сокращение для односимвольной строки [3]

Пример односимвольных строк. Запись ?а эквивалентна "a"

Из этого следует вывод, что ?? эквивалентна "?". За этим следует запись "?"=="??". Само собой строка "?" не равна строке "??", но она станет ей равной, так как перед ней стоит ??, то есть произойдёт конкатенация [4]. Запись примет следующий вид

новая запись точка гиф

Забегая вперед, можно сразу заметить аналогичную запись в ветках if и else. Та же запись ?? и то же преобразование в "?"

новая запись два точка зип

Теперь переходим к записи !!"?". Как уже говорилось в самом начале, оператор bang (!) означает отрицание (короткая запись оператора not [5])

нью стайлс точка севен зип


Из этого следует вывод, что !!"?" равно true, так как у нас присутствует двойное отрицание (то же самое, что минус на минус даёт плюс). А по ветке else – false, так как здесь тройное отрицание (то же самое, что минус на минус на минус даёт минус). После такой махинации можно записать разобранную задачу следующим образом

следующие способы точка пхп

Вот так вот задача с непонятым условием становится сущим пустяком для всех нас)

Report Page