-4

我有以下内容:

my $v = "value";
my $v1 = "value";
my @v2 = ("v3", v4");

我怎样才能拥有一个包含 v、v1 和 v2 元素的 foreach?类似于:

foreach my $element ($v, $v1, @v2) {
 # Do something with the element. 
}

本质上我希望它相当于

foreach my $element ($v, $v1, $v3, $v4) {

}
4

2 回答 2

1
foreach my $element ($v, $v1, @v2) { ... }

相当于

foreach my $element ($v, $v1, $v2[0], $v2[1], ..., $v2[$#v2]) { ... }

这似乎正是您想要的。

于 2013-03-07T04:03:55.050 回答
0

但是,您的问题有点不清楚-如果您的意思是:我有一个 foreach 将包含 v, v1 和 v2 的元素,那么这就是您要做的(用您的符号表示):

my $v = "value1";
my $v1 = "value2";
my @v2 = ("v3", "v4");

foreach my $element($v, $v1, @v2) {
    print $element . "\n";
}

这将为您提供输出:

value1
value2
v3
v4

这是如何运作的?foreach 循环通过将控制变量 (VAR) 设置为列表的每个连续元素来迭代值列表:

foreach VAR (LIST) {
    ...
}

在您的情况下,控制变量名称是$element,列表及其值是:($v, $v1, @v2) - 或者,更明确地说:("value1", "value2", "@v2[0 ]", "@v2[1]") - 可以被认为是 - (但不是真的)以下内容: ("value1", "value2", "v3", "v4")

而且,根据 ikegami 的警告,仅供参考:如果您在循环中修改 $element 值,则列表中保存的值将依次被修改。

于 2013-03-07T04:05:04.957 回答