You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raku的字符串范围运算符能否实现与Perl一致的行为?

差异原因

Raku的..范围运算符对字符串输入的默认逻辑是固定长度逐位递进:仅逐位调整字符,每一位到边界后进位,不会自动遍历低位的所有组合,所以会出现"aa" .. "bb"只输出aa ab ba bb的情况。而Perl的字符串范围默认使用「魔性字符串递增」逻辑,会完整遍历所有符合字符顺序的组合。

解决方案

使用Raku的...序列生成器,显式指定以succ方法(对应Perl的字符串递增逻辑)作为递进规则,即可得到和Perl完全一致的结果:

字符串场景示例

# 等价于Perl的 "aa" .. "bb"
my @alpha-range = "aa", *.succ ... "bb";
# 输出内容:aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb

数字字符串场景示例

不需要提前转Int,用同样的规则即可实现预期效果:

# 等价于Perl的 "12" .. "23"
my @num-range = "12", *.succ ... "23";
# 输出内容:"12" "13" "14" ... "22" "23"

快捷封装(可选)

如果需要频繁使用类Perl的范围逻辑,可以自定义一个专用运算符简化调用:

sub infix:<..p>($start, $end) { $start, *.succ ... $end }

# 直接调用即可
say "aa" ..p "bb";
say "12" ..p "23";

内容的提问来源于stack exchange,提问作者Nikola Benes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:06:04