【发布时间】:2010-03-29 16:27:58
【问题描述】:
当我运行这个时:
use feature ':5.10';
$x=1;
given ($x) {
when(1) {
say '1';
$x = 2;
continue;
}
when (2) {
say '2';
}
}
这应该打印 1 和 2,但它只打印 1。我错过了什么吗?
编辑:
我添加了 $x = 2,但它仍然只打印“1”
【问题讨论】:
-
为什么期望它输出2?
$x是 1。 -
查看我的编辑...仍然无法正常工作
-
这不起作用,因为
given将$x复制到$_,这是智能匹配的参数。如果您在第一个when中设置$_ = 2,它将起作用。 -
FWIW,我在 Learning Perl, Fifth Edition 中展示了一个扩展示例来解决这个问题。 :)
-
另外,对于任何在家玩的人,请使用 5.10.1。智能匹配在 5.10.0 中被破坏。
标签: perl switch-statement continue