Elixir:何时使用.ex和.exs文件

Ole*_*ann 71 elixir

Elixirs文档声明

除了Elixir文件扩展名.ex之外,Elixir还支持.exs文件以进行脚本编写.Elixir以完全相同的方式处理两个文件,唯一的区别在于意图..ex文件用于编译,而.exs文件用于编写脚本,无需编译.

但我仍然不确定何时使用哪种文件类型..ex和.exs的缺点和目的是什么?

Cod*_*oll 129

.ex用于编译代码,.exs用于解释代码.

例如,ExUnit测试位于.exs文件中,因此您不必在每次更改测试时重新编译.如果您正在编写脚本或测试,请使用.exs文件.否则,只需使用.ex文件并编译代码.

就优点/缺点而言,解释将花费更长的时间来执行(因为长生不老药必须解析,标记化等),但不需要编译才能运行.这就是它 - 如果运行脚本的灵活性比优化的执行时间更重要,请使用.exs.大多数时候,你会使用.ex.


小智 8

Elixir 将编译整个 .ex 文件。.exs 文件也被编译,但旨在在调用时执行。因此,.exs 文件的大多数用例是在调用时立即执行代码。考虑使用 .exs 文件进行测试、迁移数据和运行脚本。将 .ex 文件视为用于应用程序的主要业务逻辑。

考虑这个例子

.ex 样本

sum.ex

defmodule Sum do
  add(a, b) do
     a + b
  end
end
Run Code Online (Sandbox Code Playgroud)

$ iex sum.ex

iex> Sum.add(1,2)
3
Run Code Online (Sandbox Code Playgroud)

.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}"
Run Code Online (Sandbox Code Playgroud)

$ 长生不老药 sum.exs

 ->> "The sum of 3 + 2 is: 5"
Run Code Online (Sandbox Code Playgroud)