Elixir:何时使用.ex以及何时使用.exs文件


78

药剂的文档指出的是

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

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

Answers:


145

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

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

就利弊而言,解释将需要更长的时间来执行(因为e剂必须解析,标记化等),但是不需要运行编译。差不多就可以了-如果运行脚本的灵活性比优化执行时间更重要,请使用.exs。大多数情况下,您将使用.ex


6

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"

1

我检查它在花好月圆版本1.9.1和两个扩展.ex.exs将被编译elixirc。换句话说,.beam在两种情况下我们都得到字节码(文件)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.