2
當我遇到問題時,我正在使用erlang中的匿名函數。 功能定義如下在erlang模塊中使用匿名函數時遇到問題
-module(qt).
-export([ra/0]).
ra = fun() -> 4 end.
然而,這並不正常工作
-export(Ra/0]).
Ra = fun() -> 4 end.
而且也不該 誰能告訴我,爲什麼二郎就存在這種行爲?
當我遇到問題時,我正在使用erlang中的匿名函數。 功能定義如下在erlang模塊中使用匿名函數時遇到問題
-module(qt).
-export([ra/0]).
ra = fun() -> 4 end.
然而,這並不正常工作
-export(Ra/0]).
Ra = fun() -> 4 end.
而且也不該 誰能告訴我,爲什麼二郎就存在這種行爲?
Erlang模塊不能導出變量,只能導出函數。
可以實現類似於通過出口零點的參數,僅僅返回一個值的函數輸出變量的東西(一個匿名函數是一個有效的返回值):
-module(qt).
-export([ra/0]).
ra() ->
fun() -> 4 end.
現在,您可以從shell使用:
1> c(qt).
{ok,qt}
2> qt:ra().
#Fun<qt.0.111535607>
3> (qt:ra())().
4
儘管Erlang將這些名稱作爲變量進行調用,但它們的值無法更新。所以暴露這種東西是沒有用的。 –
所以erlang認爲這是賦值給一個變量而不是一個函數,因此拒絕導出它? – draklor40
@ draklor40拒絕編譯,甚至。在Erlang模塊中,變量賦值只能出現在函數中。 – legoscia