smartmatch 运算符未按预期工作
The smartmatch operator is not working as expected
为什么智能匹配运算符 ~~
说 0
不在 (0, 5..100)
中?
print ((0 ~~ (0, 5..100)) ? "Y" : "N");
N
测试一下here。
将右侧设为数组引用
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)
是列表但不是数组,这是区分重要的地方之一。
不要使用损坏的智能匹配运算符。 0 ~~ ...
是它被认为损坏的具体原因之一。
使用
grep { $_ } 0, 5..100
或
use List::Util qw( first );
first { $_ } 0, 5..100
为什么智能匹配运算符 ~~
说 0
不在 (0, 5..100)
中?
print ((0 ~~ (0, 5..100)) ? "Y" : "N");
N
测试一下here。
将右侧设为数组引用
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)
是列表但不是数组,这是区分重要的地方之一。
不要使用损坏的智能匹配运算符。 0 ~~ ...
是它被认为损坏的具体原因之一。
使用
grep { $_ } 0, 5..100
或
use List::Util qw( first );
first { $_ } 0, 5..100