【发布时间】:2019-08-07 13:40:02
【问题描述】:
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(" ").Seq没有削减它。它只返回(1),而预期返回(1 2 3 4 5 6 7 8 9 10) -
"1 10".split(" ")返回一个序列——我使用(1,10).Seq使其等效。至于把第三个数字放在哪里:这不像我建议的那样起作用,请忽略。 -
"范围运算符
[...]" 您的代码 is 使用您正在显示的操作(省略号或 3 点,…或...) 但那不是Rangeop。中缀...是the sequence operator。它采用一个或多个初始值和一个可选的生成器在它的左边,一个智能匹配在它的右边,并构造一个@987654322 @。还有还有一个中缀2点range operator,它构造了一个Range。 -
是三个点,我的意思不是包含三个点的特殊字符。但是我现在刚刚尝试使用特殊字符
…,它确实对结果没有影响,即我仍然需要在两者之间放置 +(1 2 3 4 5 6 7 8 9 10) -
对。三个点的含义与特殊省略号字符完全相同。他们是别名操作。我的意思是,您将其称为“范围”运算符,但范围是 P6 中与序列不同的特定事物,并且范围运算符是 两个 点,而不是三个点。 Anyhoo,我看到您已经编辑了您的问题,将其称为序列操作,因此现在一切都已解决。 :)
标签: raku