Понимание списка И охранники - PullRequest
0 голосов
/ 07 октября 2011

Как реализовать 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 Ответ

7 голосов
/ 07 октября 2011

Это определенно AND.Первый элемент не проходит оба теста;вторая не проходит тест X#r.a =/= 1.

Если вы хотите ИЛИ, просто используйте оператор orelse:

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