Подтвердить что ты не робот

Эликсир: когда использовать .ex и когда .exs файлы

Документация Elixirs гласит, что

В дополнение к расширению файла Elixir.ex, Elixir также поддерживает .exs для сценариев. Эликсир рассматривает оба файла точно так же путь, единственное различие заключается в намерении..ex файлы должны быть скомпилированы, в то время как файлы .exs используются для сценариев, без необходимости сборник.

Но я все еще не уверен, когда использовать тип файла. Каковы нижние и конечные цели .ex и .exs?

4b9b3361

Ответ 1

.ex предназначен для скомпилированного кода, .exs предназначен для интерпретируемого кода.

Тесты ExUnit, например, находятся в файлах .exs, поэтому вам не нужно перекомпилировать каждый раз, когда вы вносите изменения в свои тесты. Если вы пишете сценарии или тесты, используйте файлы .exs. В противном случае просто используйте файлы .ex и скомпилируйте свой код.

Что касается плюсов/минусов, интерпретация займет больше времени (поскольку эликсир должен анализировать, токенизировать и т.д.), но не требует компиляции для запуска. В значительной степени это - если гибкость запуска скриптов важнее оптимизированного времени выполнения, используйте .exs. В большинстве случаев вы будете использовать .ex.

Ответ 2

Elixir скомпилирует весь файл .ex. Файлы .exs также компилируются, но должны выполняться при вызове. Таким образом, большинство случаев использования файлов .exs заключается в немедленном выполнении кода при вызове. Подумайте об использовании файлов .exs для тестирования, переноса данных и запуска скриптов. Представьте, что файлы .ex используются в основной бизнес-логике вашего приложения.

Рассмотрим этот пример

пример .ex

sum.ex

defmodule Sum do
  add(a, b) do
     a + b
  end
end

$ iex sum.ex

iex> Sum.add(1,2)
3

пример .exs

sum.exs

defmodule Sum do
  def add(a,b)  do
    a + b
  end
end

#within same file

IO.puts "The sum of 3 + 2 is: #{inspect Sum.add(3, 2}"

$ elixir sum.exs

 ->> "The sum of 3 + 2 is: 5"

Ответ 3

Я проверяю это в Elixir версии 1.9.1, и оба расширения .ex, .exs будут скомпилированы с elixirc. Другими словами, мы получаем байт-код (файл .beam) в обоих случаях.

Ответ 4

В Elixir существуют два типа файла: script (с расширением .exs) и файл кода (с расширением .ex). Разница в том, что файлы с расширением .ex предназначены для компиляции с помощью elixirc, в то время как .exs предназначены для непосредственного использования с elixir.

Источник: http://blog.distortedthinking.agency/articles/functions-functions-and-more-functions/