簡體   English   中英

在 Erlang 中作為參數的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM