gpt4 book ai didi

erlang - 无法将乐趣分配给erlang模块中的变量

转载 作者:行者123 更新时间:2023-12-01 11:19:22 25 4
gpt4 key购买 nike

我正在使用 Programming with Erlang 中的示例代码。我很开心。帮助我了解下面的代码出了什么问题。

-export([totalcost/1]).

Costeach = fun(X) -> {W,Q} = X, shop:cost(W)*Q end.
sum(H|T) -> H + sum[T];
sum([]) -> 0.
totalcost(L) -> sum(lists:map(Costeach,L)).

我想要实现的只是能够将变量(分配给它的乐趣)作为参数传递给映射。从此模块获取总成本

我不断收到语法错误/Costeach 未初始化错误。

最佳答案

您不能在顶层定义这样的函数。您有两个选择:使用您正在使用的语法,但在命名函数中声明它,或者将其声明为命名函数并使用 fun name/arity将其转换为匿名函数以传递给 lists:map 的语法.

第一种方法:

sum(H|T) -> H + sum[T];
sum([]) -> 0.
totalcost(L) ->
Costeach = fun(X) -> {W,Q} = X, shop:cost(W)*Q end.
sum(lists:map(Costeach,L)).

第二种方法:
costeach(X) -> {W,Q} = X, shop:cost(W)*Q.
sum(H|T) -> H + sum[T];
sum([]) -> 0.
totalcost(L) -> sum(lists:map(fun costeach/1,L)).

提示:您可以在这两种情况下对函数参数进行解构以节省一行代码:
Costeach = fun({W,Q}) -> shop:cost(W)*Q end.

或者
costeach({W, Q}) -> shop:cost(W)*Q.

关于erlang - 无法将乐趣分配给erlang模块中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com