for my $i (@a) 语句

for my $i (@a) 语句

for my $i (@a) {
    $i++;
}
print @a;


这里取到的$i,对其进行赋值为什么会直接改变到数组@a本身的值。。。
$i为什么不是值拷贝??
语法规定如此。
这里可以理解为引用


QUOTE:
原帖由 flw 于 2008-11-12 09:42 发表
语法规定如此。

哦,原来这样,有点怪怪的。。


QUOTE:
原帖由 maxxfire 于 2008-11-12 09:36 发表
for my $i (@a) {
    $i++;
}
print @a;


这里取到的$i,对其进行赋值为什么会直接改变到数组@a本身的值。。。
$i为什么不是值拷贝??



[Copy to clipboard] [ - ]
CODE:
如果想象c语言那样$i++。用for (; ; )



QUOTE:
原帖由 cugb_cat 于 2008-11-12 09:46 发表
这里可以理解为引用

但又不是引用,因为引用不会自动解引用。
我觉得可以理解成“同义词”。


QUOTE:
原帖由 flw 于 2008-11-12 09:50 发表

但又不是引用,因为引用不会自动解引用。
我觉得可以理解成“同义词”。

嗯,在 Perl 的文档中称为 alias
恩,不错,我看loop的时候也无注意这个问题。重瞄了哈loop章节,学习了!


QUOTE:
原帖由 mouse.rice 于 2008-11-12 14:27 发表
恩,不错,我看loop的时候也无注意这个问题。重瞄了哈loop章节,学习了!

for 的这个问题在 Perl Best Practices 中专门有提到。