are implemented as macros in the language; they aren't special language constructs as they would be in many languages. You can check the documentation and the source of if/2 in the Kernel module docs.
if is just a degenerate case of case so it inherited it. There is a bit of history of if in the Erlang Rationale which you can find on trapexit.org under user contributions
я правильно понимаю:
if - Это макрос. Когда используем его то vm на самом деле переделывает его в function внутри которой инициализируются default переменные и за ними все равно идет нативная конструкция case…end
?
то есть правильно клепать факты посдедовательно (как в prolog) вместо if ... then ... else ... end
Не понял про function и default переменные, if раскрывается в простой case https://github.com/elixir-lang/elixir/blob/v1.13.3/lib/elixir/lib/kernel.ex#L3669 Если у тебя одно условие, то пользуйся if, иначе case или cond в зависимости от входных данных
Обсуждают сегодня