gpt4 book ai didi

raku - Perl 6 将 split 函数的输出解释为整数列表/数组

转载 作者:行者123 更新时间:2023-12-04 10:46:26 24 4
gpt4 key购买 nike

say "1 10".split(" ") 

返回 (1,10)
当我使用那些 110作为序列运算符 [...] 的参数
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)

这使用了 << hyperop对由 + 生成的序列的每个元素应用数字强制(前缀 split ) .

关于字符串端点的序列和范围行为:
  • SO Why does the Perl 6 sequence 'A' … 'AA' have only one element? .链接 SO 中描述的内容适用于您指定的序列,即 "1"..."10" .
  • 乐堂公开期 Sequence operator with string endpoints and no explicit generator produces unintuitive/undocumented results .
  • SO Why are some of my ranges insane? .


  • 你写的相当于:
    put gist "1"..."10";

    ( say 等价于 put gist 。)

    一个 gist"1"..."10"(1) .

    那是因为 gistList.new("1")(1)就像 gistList.new("a")(a) .

    "1"..."10"计算结果为 List.new("1") .

    为什么?我还不确定,但我正在探索可用的信息。

    让我们从文档开始。 doc for the infix ... op说:

    The default generator is *.succ or *.pred, depending on how the end points compare



    好:
    say "1" cmp "10"; # Less

    这大概意味着序列开始调用 *.succ .

    进而:
    say "1".succ;     # 2

    和:
    say "2" cmp "10"; # More

    这似乎导致序列在“1”之后立即终止,而不是包括“2”并继续。

    我正在继续搜索错误队列并检查@wamba++ 在他们对上述链接 SO“为什么 Perl 6 序列 'A' … 'AA' 只有一个元素?”的回答中链接的区域周围的代码。

    关于raku - Perl 6 将 split 函数的输出解释为整数列表/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395832/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com