【发布时间】:2020-06-09 01:26:27
【问题描述】:
我已经检查了 erlang 网站运营商等,但我找不到什么 ||和 |手段。
我在某处读到 ||表示“这样”,但只有一个“|”是什么意思?
【问题讨论】:
我已经检查了 erlang 网站运营商等,但我找不到什么 ||和 |手段。
我在某处读到 ||表示“这样”,但只有一个“|”是什么意思?
【问题讨论】:
| 是 "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]
| 运算符是必不可少的,因为它是您从现有的头元素和列表的尾部构造新列表的规范方式。同样的符号也适用于模式匹配,也就是说,它也是你解构列表的方式。
另一方面,列表推导式主要是语法糖:它们可以使用常规函数应用程序编写,因此不是语言的基础。但它们可以通过消除句法噪音、直接在语言中模仿数学符号等集合理解来显着提高可读性。
【讨论】: