Elixir и логика. Для лентяев и очень строгих
Простыми словами разбираемся, что за логические операторы такие, почему бывают ленивые и как их понять.
В параллельном мире Elixir логические операторы делятся на 2 группы: "Строгие" ( and, or, not ) и "Ленивые" ( &&, ||, ! ).
Как ты понимаешь, разница здесь не в "качестве логики и ее силе", а в том ЧТО ОНИ ПРИНИМАЮТ НА ВХОД И КАК ПРИ ЭТОМ СЕБЯ ВЕДУТ!
Итак, поехали...
1. СТРОГИЕ логические операторы в Elixir: and, or, not
Они работают ТОЛЬКО с булевыми значениями true / false.
Если им передать на вход что-то другое, например строку, nil или число – будет ошибка компиляции, смотрим в iex:
Когда использовать в коде?
Когда ты точно получаешь на входе true/false ( например number > 1 ). И только!
2 ЛЕНИВЫЕ логические операторы в Elixir: &&, ||, !f
Эти операторы не требуют только true/false, так как в Elixir "ложными" считаются только false и nil. Все остальное ( числа, строки, атомы, списки, и т.д ) считаются "истинными"!
Почему они ленивые?
Потому что, если результат в левой части уже ясен – правая часть не вычисляется.
Смотрим в iex:
Зачем это нужно?
Лень – это прото, что если правая часть не нужна, она и не вычисляется. Зачем напрягать вычислитель?)
Продолжение следует...



