raku - 解构对列表
问题描述
考虑
.say for (1,2,2).rotor(2=>-1).map( -> ($a, $b) { $a - $b })
按预期工作。然而,
.say for (1,2,2).pairs.rotor(2=>-1).map( -> ($a, $b) { $a.value - $b.value })
投掷
Too few positionals passed to '<anon>'; expected 2 arguments but got 0 in sub-signature
这是一个错误还是我错过了什么?
这是 Rakudo Star 版本 2019.03.1,基于 MoarVM 版本 2019.03 实现 Perl 6.d。
解决方案
它将 thePair
作为 a Capture
,从而将 thePair
变成一个命名参数:
$ raku -e '(a => 42, b => 666).map: -> |c { dd c }'
\(:a(42))
\(:b(666))
在您的示例中,它不会传递任何位置参数,从而导致观察到的执行错误。
jnthn++ 指出这一点。
推荐阅读
- python - 散景服务器 - 如何在回调函数中操作选择
- spring-boot - 无法将 @LoadBalanced 与在 ClientCredentials 上配置的 OAuth2RestTemplate 一起使用
- iis - 一台 IIS 服务器上的多个网站
- nsis - 如何在 NSIS 中比较两个字符串
- android - 为什么我无法访问环境。DIRECTORY_PICTURES?(decodeFile 返回 null)
- reactjs - React ui-router 测试状态变化
- openlayers-3 - OpenLayers 3个具有基于距离的半径的圆圈
- bash - 使用 chef 运行 bash passwd
- python - 在python中将正(+)和负(-)符号更改为整数
- excel - 在 Excel 中创建一个在回答问题时向下移动的文本箭头