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

时间:2016-03-29 18:45:36

标签: elixir

Elixirs Documentation指出

  

除Elixir文件扩展名.ex外,Elixir还支持   用于编写脚本的.exs文件。 Elixir将两个文件完全相同   方式,唯一的区别在于意图。 .ex文件应该是   编译而.exs文件用于编写脚本,而不需要   汇编

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

4 个答案:

答案 0 :(得分:108)

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

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

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

答案 1 :(得分:0)

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"

答案 2 :(得分:0)

我在Elixir 1.9.1版中进行了检查,并且两个扩展名.ex.exs都将使用elixirc进行编译。换句话说,在两种情况下,我们都得到字节码(.beam文件)。

答案 3 :(得分:-3)

在Elixir中,有两种类型的文件,脚本文件(扩展名为.exs)和代码文件(扩展名为.ex)。区别在于.ex扩展名的文件用于使用elixirc进行编译,而.exs则直接用于elixir

来源:http://blog.distortedthinking.agency/articles/functions-functions-and-more-functions/