2011-10-07 42 views
0

如何在列表解析中實施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]. 
[] 

非常感謝。

回答

7

這絕對是一個AND。第一個元素不能通過兩個測試;第二次失敗X#r.a =/= 1測試。

如果你想要或者,只需使用orelse操作:

2> [X || X <- L, X#r.a =/= 1 orelse X#r.b =/= 2]. 
[#r{a = 1,b = 3}] 
+0

哦,上帝。我心何在?謝謝。我試圖做的是包含如果雙方都滿意的要素。 –

+0

@MartinDimitrov:我已經修改了我的答案以涵蓋OR。 –

+0

非常感謝您的幫助。 –