Elixir 如果未调用,为什么IO.会将打印内容放入模块中的终端
我有一个问题,我有这个模块Elixir 如果未调用,为什么IO.会将打印内容放入模块中的终端,elixir,Elixir,我有一个问题,我有这个模块 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 为什么??我只是编译了这个文件,并没有从任何地方调用这个模块在
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文件写入磁盘,另一个不写入。我想说您弄错了,它也在运行它。:-)你确定你做了“长生不老药”而不是“长生不老药”?是的,我确定,事实上,我做了长生不老药和长生不老药谢谢,我有这个想法,但我不确定。现在我确信一切都是一个表达式并返回一个值。