syntax - [] 在 Perl 6 中使用匿名函数减少
问题描述
我们可以使用reduce
带有sub
两个参数的 a,将其放在双括号中:
> sub mysum { $^a + $^b }
> [[&mysum]] 1,3,5
9
但是如果我们想使用匿名函数呢?
以下两种变体都会产生编译错误:
> [[&{ $^a + $^b }]] 1,3,5
> [[{ $^a + $^b }]] 1,3,5
解决方案
你不能有任何以这种形式减少的空间。
> [[&({$^a+$^b})]] 1, 3, 5
9
这是为了更明显的是它是一个 reduce,而不是一个数组声明。
> [ { $^a + $^b }, { $^a * $^b } ].pick.(3,5)
8 | 15
double[[…]]
只是允许将任何函数用作中缀运算符的扩展。
请注意&(…)
,当不谈论命名函数&foo
或已经存在的中缀运算符时,您必须在此功能中使用。
> 3 [&( { $^a + $^b } )] 5
8
[…]
这是使用括号元运算符的一种扩展,例如Z
和=
> @a [Z[[+]=]] 1..5
> @a Z[[+]=] 1..5
> @a Z[+=] 1..5
> @a Z+= 1..5
推荐阅读
- javascript - 使用 JavaScript 将 DropDown 值参数化为 URL?
- firebase - Firestore 数据建模 - Dialogflow 上的 ChatBOT
- android - 如何使用 WiFi 连接在 Android 应用程序中接收传感器的数据?
- c++ - 函数作为具有默认值的参数
- sql - Postgres - 当流派列具有逗号分隔值“动作、喜剧、....惊悚片...”时,获取每种流派的计数
- php - 为什么不能导入备份站点 WordPress?插件一体化迁移
- sql - 从 Netezza 数据库创建 SAS 数据集时,SAS“CLI 游标扩展提取错误:数值超出范围”
- xslt - 选择 XSLT1.0 或 2.0 后连接
- angular - 元标记在 Angular 6 中没有得到更新
- mysql - Grafana - 时间序列图使用 mysql 无法正常工作