Erlang sumif函数

青色

我正在尝试sumif在Erlang中创建一个函数,如果谓词函数的计算结果为true,则该函数将返回列表中所有元素的总和。这是我所拥有的:

sumif(_, []) -> undefined;
sumif(Fun, [H|T]) -> case Fun(H) of
                       true -> H + sumif(Fun, T);
                       false -> sumif(Fun, T)
                     end.

我还实现了自己的pos函数,如果数字大于0,则返回true,否则返回false:

pos(A) -> A > 0.

我尝试使用poswith,sumif但出现此错误:

exception error: bad function pos

为什么会这样呢?是因为我的sumif功能还是pos我已经对其pos进行了单独测试,它似乎工作正常。

编辑:这可能是因为我如何调用该函数。我现在这样称呼它:我的模块名称hi:sumif(pos,[-1,1,2,-3]).在哪里hi

多伯特

是因为我的sumif函数还是pos?

这是因为sumif0当传递一个空列表时,您应该返回,因为当Tis时将从第二个子句中调用它[]

-module(a).
-compile(export_all).

sumif(_, []) -> 0;
sumif(Fun, [H|T]) -> case Fun(H) of
                       true -> H + sumif(Fun, T);
                       false -> sumif(Fun, T)
                     end.

pos(A) -> A > 0.

测试:

1> c(a).
{ok,a}
2> a:sumif(fun a:pos/1, [-4, -2, 0, 2, 4]).
6

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Erlang butlast函数

来自分类Dev

外部函数调用Erlang

来自分类Dev

Erlang中的函数链接

来自分类Dev

Erlang中非终止函数的类型

来自分类Dev

在Erlang函数之外声明变量

来自分类Dev

递归函数调用挂起,Erlang

来自分类Dev

Erlang中非终止函数的类型

来自分类Dev

在Erlang函数之外声明变量

来自分类Dev

编写一个Erlang timeit函数

来自分类Dev

调试挂在Erlang中的函数调用

来自分类Dev

Erlang中函数的返回值

来自分类Dev

在Erlang中实现partition_by函数

来自分类Dev

使用ets函数读取mnesia表(erlang)

来自分类Dev

如何使用变量调用Erlang函数?

来自分类Dev

何时在Erlang中使用宏函数?

来自分类Dev

没有匹配erlang的函数子句

来自分类Dev

将数组传递给erlang中的函数

来自分类Dev

Erlang:包含模块和调用函数

来自分类Dev

如何在Elixir中调用Erlang函数

来自分类Dev

如何计算Erlang中的函数调用次数?

来自分类Dev

Erlang中的伪函数是什么?

来自分类Dev

通过函数防护了解Erlang Basic递归

来自分类Dev

Erlang中函数的返回值

来自分类Dev

如何使用erlang函数term_to_json?

来自分类Dev

在erlang中计时一个函数

来自分类Dev

将数组传递给erlang中的函数

来自分类Dev

如何计算Erlang中的函数调用次数?

来自分类Dev

Erlang帮助:在匿名函数中使用If语句

来自分类Dev

Erlang 不会警告未使用的函数参数