最佳答案
我正在学习Elixir,想知道为什么它有两种类型的函数定义:
def
模块中,使用myfunction(param1, param2)
调用fn
定义的匿名函数,使用myfn.(param1, param2)
调用只有第二种函数似乎是一类对象,可以作为参数传递给其他函数。模块中定义的函数需要包装在fn
中。有一些语法糖,看起来像otherfunction(&myfunction(&1, &2))
,以使这更容易,但为什么它是必须摆在首位?为什么我们不能直接做otherfunction(myfunction))
?它是否只允许像Ruby那样调用不带括号的模块函数?它似乎继承了Erlang的这个特性,Erlang也有模块功能和乐趣,那么它实际上是来自Erlang VM内部的工作方式吗?
有两种类型的函数并从一种类型转换为另一种类型以便将它们传递给其他函数有任何好处吗?使用两种不同的表示法调用函数是否有好处?