gpt4 book ai didi

Erlang 列出了 :filter/2 cannot use comma instead of andalso

转载 作者:行者123 更新时间:2023-12-04 19:40:36 24 4
gpt4 key购买 nike

以下代码在编译时给我警告:
警告:使用运算符“>”无效

rd(a,{x,y}),
List = [#a{x=1,y=2}, #a{x=3,y=4}],
lists:filter(
fun(E) ->
E#a.x > 1, E#a.y =:= 2
end, List).

但是当我用andalso代替逗号时,没有警告。

最佳答案

在这种情况下使用逗号只分隔两个 Action ,彼此没有影响:E#a.x > 1和下一个操作(这是函数的结果)E#a.y =:= 2
这意味着在您的情况下,过滤器函数等于:

fun( E ) ->
E#a.y =:= 2
end

仅当您在写 保护表达式 逗号的用法等于 andalso 的用法, 否则 - 逗号只是 分隔符 Action 之间。

因此,您可以通过两种方式重写您的函数:

1)
fun
(E) when E#a.x > 1, E#a.y =:= 2 ->
true;
(_Othervise) ->
false
end

2)
 fun( E ) ->
(E#a.x > 1) andalso (E#a.y =:= 2)
end

关于Erlang 列出了 :filter/2 cannot use comma instead of andalso,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347235/

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