3

为什么 smartmatch 运营商~~说那0不在(0, 5..100)

print ((0 ~~ (0, 5..100)) ? "Y" : "N");

ñ

在这里测试一下。

4

2 回答 2

5

使右侧成为数组引用

print ((0 ~~ [0, 5..100]) ? "Y" : "N");

或命名数组

@a = (0, 5..100);
print ((0 ~~ @a) ? "Y" : "N");

或...无论这叫什么(匿名命名数组?)

print ((0 ~~ @{[0,5..100]}) ? "Y" : "N");

(0,5..100)是一个列表,但它不是一个数组,这是区分很重要的地方之一。

于 2021-01-07T18:24:54.513 回答
2

不要使用损坏的智能匹配运算符。0 ~~ ...尤其是它被认为损坏的原因之一。

采用

grep { $_ } 0, 5..100

或者

use List::Util qw( first );

first { $_ } 0, 5..100
于 2021-01-07T19:54:15.390 回答