这个问题是关于合作伙伴今天遇到的一些语法,虽然我们了解它的工作原理,但我们不明白为什么允许它(它的用途是什么?)。
看看这个片段:
fun() -> ok end().
如果没有最后一对括号,这将产生如下内容:
#Fun<erl_eval.20.82930912>
但是有了它们,函数被评估产生:
ok
我的问题是,为什么 Erlang 允许使用这种语法?为什么我要创建一个函数来立即调用它而不是写出它的内容?它有什么实际用途吗?
我们唯一能想到的就是在 fun 的主体中引入局部变量(但这对我来说看起来很丑陋且不清楚)。
请注意,Erlang 中不允许使用这种其他语法,即使它遵循与前者相同的概念:
fun() -> fun() -> ok end end()().
(这意味着:一个返回函数 B 的函数 A。我正在评估 A(从而产生 B),然后评估 B 以获得'ok'
)。