gpt4 book ai didi

raku - 为什么单个数字无法匹配数组中的 Range 对象?

转载 作者:行者123 更新时间:2023-12-04 14:53:33 24 4
gpt4 key购买 nike

> my @numbers = 1, 3, 5;
> 1 ~~ /@numbers/; #
「1」

是相同的:
> 1 ~~ /1 | 3 | 5/
「1」

但是当元素是 范围 对象,它无法匹配:
> my @ranges = 1..3.item, 4..6.item;
[1..3 4..6]

> 1 ~~ /@ranges/
Nil
> 1 ~~ /|@ranges/
Nil
> 1 ~~ /||@ranges/

最佳答案

当正则表达式引擎看到 /@numbers/它将其视为数组元素的交替,因此您的前两个示例是等效的。
Range 没有这样的自动化我相信。

编辑:下面没关系,我一开始完全误读了这个问题。

> my @ranges = 1..3, 4..6;
[1..3 4..6]
> 1 ~~ @ranges[0];
True
> 2 ~~ @ranges[1];
False
> 4 ~~ @ranges[1];
True
> @ranges.first( 5 ~~ * )
4..6

看? @ranges是一个范围的数组(您对 item 的调用在这里没有任何作用)。从理论上讲,如果 smartmatch 算子更聪明,这将成立。
> 1..3 ~~ @ranges;
False

扁平化也无济于事,因为一个扁平的范围列表仍然是一个范围列表。

展平范围本身是可能的,但这只是将它们变成数组
> my @ranges2 = |(1..3), |(4..6)
[1 2 3 4 5 6]

关于raku - 为什么单个数字无法匹配数组中的 Range 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305709/

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