Рубрики
Без рубрики

Мнения о правдоподобных языках

Версия этой статьи изначально появилась на моем GitHub Pages Blog Различные языки разные … Теги с JavaScript, Python, Ruby, Nowizers.

Версия этой статьи первоначально появилась на Мой блог Github Pages

Различные языки имеют разные мнения о том, что лечить как «правдоподобные» или «ложное» при использовании не булевого объекта как выражение внутри Если утверждение.

Я посмотрел на Python, Groovy, JavaScript и Ruby, чтобы сравнить их различия.

  • Нуль всегда ложно
  • Ноль и пустые струны являются фальсифицированными, за исключением рубина
  • Пустые коллекции (Set/List/Dict) являются ложными в Python и Groovy, но не JavaScript или Ruby

Мои наблюдения и личные мнения на языковой конструкции:

  • Python лечит нулю, пустые строки и коллекции все как «ложное». Лично я нахожу эту самую интуитивную конвенцию.
    • Лечение нуля и NULL в качестве фальсификации имеет исторический прецедент из C. ЛОЖНЫХ и нулевых указателей оба представляют как Zeros в регистре или местоположении памяти.
    • Лечение пустых струн и коллекций является хорошим удобством, учитывая количество раз, когда я написал условные условия, такие как Если (foo и! foo.empty ()) Отказ Обычно это исключение, что я хочу различать нулевые и пустые в условном состоянии. Так что приятно, что Если (foo) обрабатывает общий корпус, то я могу написать Если (не Foo нет) Когда я действительно хочу отличить нуль.
    • Обработка пустой строки подобному значению NULL, знакома от моего опыта Oracle. Кроме того, он соответствует лечению пустой коллекции.
  • Groovy вдохновлен Python и принимает подобные конвенции для правдопоставления.
  • Ruby занимает другое мнение, что все значения являются правдой, кроме Нильfalse , конечно). Пока это не мое личное предпочтение, это оправдано и самостоятельно.
  • JavaScript может быть надежно, как ожидается, доставит WTF. JavaScript лечит нулю и пустые строки как ложность, но пустые коллекции как правдоподобные. Для меня трудно понять, почему строки и коллекции должны вести себя по-разному; Поведение Python имеет гораздо больше смысла. Но подожди, становится еще лучше: проверить это Ссылка на Stackoverflow Отказ

Оригинал: “https://dev.to/wrschneider/opinions-on-truthiness-across-languages”