列表理解和警卫

时间:2011-10-07 06:30:59

标签: erlang list-comprehension

如何在列表推导中实施AND警卫?用逗号分隔警卫似乎是OR

1> rd(r, {a, b}).
r
2> L = [#r{a = 1, b =2}, #r{a = 1, b = 3}].
[#r{a = 1,b = 2},#r{a = 1, b = 3}]
3> [X || X <- L, X#r.a =/= 1, X#r.b =/= 2].
[]

非常感谢。

1 个答案:

答案 0 :(得分:7)

这绝对是一个AND。第一个元素都没有通过测试;第二次未通过X#r.a =/= 1测试。

如果您想要OR,只需使用orelse运算符:

2> [X || X <- L, X#r.a =/= 1 orelse X#r.b =/= 2].
[#r{a = 1,b = 3}]
相关问题