我有一个问题,我有这个模块
defmodule Example do
IO.puts "Creating a function"
def sum(a, b) do
a + b
end
IO.puts "End of the function”
end
当我用 elixirc example.ex 编译它时,我得到了这个
Creating a function
End of the function
为什么?我只是编译文件,并没有从任何地方调用这个模块
最佳答案
在 Elixir 中定义一个模块就是执行该模块内的代码。事实上,甚至“def”本身也只是一个获取函数内容并将它们存储在某处的宏。一切都是表达。这就是为什么您可以执行条件定义,例如:
defmodule Example do
if true do
def sum(a, b) do
a + b
end
end
end
这就是代码以您所见的方式工作的原因。
PS:elixir 和 elixirc 会表现出相同的行为,因为它们之间的唯一区别是一个将 .beam 文件写入磁盘,另一个不写入。
关于elixir - 如果未调用 IO.puts,为什么打印到模块中的终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365130/