В Elixir / Erlang не так много гарантий времени компиляции, и в этом отношении он довольно похож на Ruby.Компилятор проверит, что функции, которые вы вызываете, действительно существуют с тем, с кем вы их вызываете, но даже это не всегда происходит.Например, если вы просто поместите в файл .ex
следующее:
defmodule A do
def a(), do: B.b()
end
и скомпилируете его с elixirc my_file.ex
, это не выдаст ошибку, но это:
defmodule A do
def a(), do: b()
end
произведет один.
Если вы хотите сделать больше проверок во время компиляции, вы можете заглянуть в dialyxir , чтобы проверить аннотации типов, которые Elixir позволяет вам включать.