![](/img/trans.png)
[英]Erlang function calls - Why does it not work to call self() as a direct argument?
[英]Function as an argument in Erlang
我正在嘗試做這樣的事情:
-module(count).
-export([main/0]).
sum(X, Sum) -> X + Sum.
main() ->
lists:foldl(sum, 0, [1,2,3,4,5]).
但看到警告和代碼失敗:
function sum/2 is unused
如何修復代碼?
注意:這只是說明問題的示例,因此沒有理由提出使用fun
表達式的解決方案。
Erlang 對此有更明確的語法:
-module(count).
-export([main/0]).
sum(X, Sum) -> X + Sum.
main() ->
lists:foldl(fun sum/2, 0, [1,2,3,4,5]).
另見“向你學習一些 Erlang ”:
如果函數名稱沒有參數列表,那么這些名稱將被解釋為原子,而原子不能是函數,因此調用失敗。
...
這就是為什么必須在語言中添加新的符號,以便讓您從模塊外部傳遞函數的原因。 這就是 fun Module:Function/Arity 的含義:它告訴 VM 使用該特定函數,然后將其綁定到一個變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.