在currying下的结果是相同的,
say map * **2 , 1, 3, 5, 7, 9;
(1 9 25 49 81)
say map *² , 1, 3, 5, 7, 9;
(1 9 25 49 81)
Run Code Online (Sandbox Code Playgroud)
另一方面,通过跨元运算符,行为是不同的,
say 1, 3, 5, 7, 9 X**2;
(1 9 25 49 81)
say 1, 3, 5, 7, 9 X²;
((1 2) (3 2) (5 2) (7 2) (9 2))
Run Code Online (Sandbox Code Playgroud)
为什么使用交叉元运算符时** 2和²的行为会有所不同?
元操作X符将两个列表结合在一起,并使用您提供的运算符将它们组合在一起。如果不给它一个运算符,它将,用作默认值。
所以在这种情况下:
say 1, 3, 5, 7, 9 X²
Run Code Online (Sandbox Code Playgroud)
该Xmetaoperator正在寻找中缀运算符。²不是后缀运算符,而是后缀。
因此X适用,为运算符。但是现在²正在作为列表进行评估,在这种情况下,它是“ this number 2”属性。
这些基本上是相同的:
say 1, 3, 5, 7, 9 X²
say 1, 3, 5, 7, 9 X, 2
Run Code Online (Sandbox Code Playgroud)
如果要对列表中的所有项目进行平方map运算,则要使用运算符。和开始时一样。
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |