raku - Perl 6 将 split 函数的输出解释为整数列表/数组
问题描述
say "1 10".split(" ")
返回(1,10)
当我使用这些1
和10
作为序列运算符的参数时[...]
say [...] "1 10".split(" ")
(1)
在它应该返回的时候返回我(1 2 3 4 5 6 7 8 9 10)
猜这是因为 split 函数的输出被解释为字符串。
如何解决这个问题?谢谢你。
解决方案
如果您想要数字行为,请强制转换为数字:
say [...] +<< "1 10".split(" "); # (1 2 3 4 5 6 7 8 9 10)
这使用<<
超运算将数字强制(前缀+
)应用于由split
.
关于字符串端点的序列和范围行为:
那么为什么 Perl 6 序列
'A' … 'AA'
只有一个元素?. 链接 SO 中描述的内容适用于您指定的序列,即"1"..."10"
.带有字符串端点且没有显式生成器的开放式 Rakudo 问题序列运算符会产生不直观/未记录的结果。
你写的相当于:
put gist "1"..."10";
(say
相当于put gist
。)
一个gist
是。"1"..."10"
_(1)
那是因为gist
ofList.new("1")
就像of(1)
一样。gist
List.new("a")
(a)
并"1"..."10"
评估为List.new("1")
.
为什么?我还不确定,但我正在探索可用的信息。
让我们从文档开始。中缀...
操作的文档说:
默认生成器是
*.succ
或*.pred
,具体取决于端点的比较方式
出色地:
say "1" cmp "10"; # Less
这大概意味着序列开始调用*.succ
.
接着:
say "1".succ; # 2
和:
say "2" cmp "10"; # More
这似乎导致序列在“1”之后立即终止,而不是包括“2”并继续。
我将继续搜索错误队列并检查@wamba++ 在他们对上述链接SO“为什么Perl 6 序列'A' … 'AA'
只有一个元素?”的回答中链接的区域周围的代码。
推荐阅读
- php - PHP 7.2 - 缺少扩展不返回错误 - 停止执行
- spring - Spring Batch Integration:使用来自 jms 的数据时增加吞吐量
- excel - 在excel中返回值
- html - 如果它出现在父级的末尾,如何隐藏具有特定类的 div?
- typescript - 使用 redux 时我在哪里初始化 props 值,而不会让我的 props 泄漏到 redux 方面
- jasper-reports - iReport - 如何防止 texfield 进入下一页
- javascript - 使用 push 从数组数组中获取值
- python-3.x - 如果 list1 的两个随机元素存在于 list 2 中,会这样吗?
- join - PySpark 动态连接条件
- reactjs - Material UI React-Autosuggest Scrollbar 在选择选项箭头键时不起作用