~~
只会检查元素直到可以确定结果。sub x { ... }; my %h; ...; %h ~~ \&x
中,智能匹配仅在 x
对于 %h
的所有键返回 true 时才返回 true;如果一个调用返回 false,则匹配可以立即返回 false 而不检查其余的键。这类似于 &&
运算符。/foo/ ~~ %h
中,如果智能匹配找到与正则表达式匹配的一个键,则可以返回 true;这类似于 ||
。perl -E "@x=qw/a b c d/; for (qw/b w/) { say qq($_ - ), $_ ~~ @x ? q(ja) : q(nein) }"
perl -E "@x=qw/a b c/; for (qw/b d/) { say qq($_ - ), scalar grep $_, @x ? q(ja) : q(nein) }"