列表理解和防护

发布于 2024-12-08 18:19:50 字数 264 浏览 0 评论 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].
[]

非常感谢。

How to implement AND guards in list comprehensions? Separating the guards with comma seems to word as 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].
[]

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒几许 2024-12-15 18:19:50

这绝对是一个 AND。第一个元素未通过这两项测试;第二个未通过 X#ra =/= 1 测试。

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

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

That's definitely an AND. The first element fails both tests; the second fails the X#r.a =/= 1 test.

If you want OR, simply use the orelse operator:

2> [X || X <- L, X#r.a =/= 1 orelse X#r.b =/= 2].
[#r{a = 1,b = 3}]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文