smartmatch运算符未按预期工作
为什么 smartmatch 运营商~~说这0不在(0, 5..100)?
print ((0 ~~ (0, 5..100)) ? "Y" : "N");
N
在这里测试一下。
回答
使右侧成为数组引用
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) 是一个列表但它不是一个数组,这是区分很重要的地方之一。