是什么 |和||在 Erlang 中是什么意思?

What does | and || mean in Erlang?

我已经检查了 erlang 网站运营商等,但我找不到什么 ||和 |手段。

我在某处读到 ||意思是 "such that" 但只有一个“|”是什么意思?

| 是 "cons" 运算符:它将一个元素放在列表前面:

1> [1 | [2,3]].
[1,2,3]
2> [[1, 2] | [3,4,5]].
[[1,2],3,4,5]

|| 用于列表解析。在其最简单的形式中,它可以用作 map:

的简写形式
3> [2 * X || X <- [1,2,3]].
[2,4,6]

但是当你想写多个生成器,创建笛卡尔积时,它变得更加方便:

4> [{X, Y} || X <- [1,2,3], Y <- [4, 5, 6]].
[{1,4},{1,5},{1,6},{2,4},{2,5},{2,6},{3,4},{3,5},{3,6}]

你也可以沿途做filter。比较:

5> [X+Y || X <- [1,2,3], Y <- [4,5,6]].
[5,6,7,6,7,8,7,8,9]

至:

6> [X+Y || X <- [1,2,3], Y <- [4,5,6], X+Y > 6].
[7,7,8,7,8,9]

| 运算符是必不可少的,因为它是从现有头部元素和列表尾部构建新列表的规范方式。同样的符号也适用于模式匹配,即,它也是你解构列表的方式。

另一方面,列表理解主要是语法糖:它们可以使用常规函数应用程序编写,因此不是语言的基础。但它们可以通过消除句法噪声、直接在语言中模仿集合理解(如数学符号)来显着提高可读性。