【发布时间】:2011-07-03 22:09:52
【问题描述】:
我可以创建一个包含“空槽”的数组:
$ perl -wde 1
...
DB<1> $x[2] = 0
DB<2> x \@x
0 ARRAY(0x103d5768)
0 empty slot
1 empty slot
2 0
或
DB<3> $#y = 4
DB<4> x \@y
0 ARRAY(0x103d5718)
0 empty slot
1 empty slot
2 empty slot
3 empty slot
4 empty slot
请注意:这与分配undef 不同。
但是如何使用[ 和] 为匿名数组指定呢?
这不起作用:
DB<5> x [,,0]
syntax error at (eval 27)[/usr/local/lib/perl5/5.10.0/perl5db.pl:638] line 2, near "[,"
这也失败了,因为我只得到了分配的值:
DB<6> x []->[2] = 0
0 0
额外问题:如何在我的 Perl 脚本中检查“空数组槽”?
背景:在我的测试脚本中,我希望能够精确地比较数组内容。例如,我想区分“未分配”和“使用 undef 值分配”。
感谢您提供任何见解。
【问题讨论】:
-
你的意思是如何直接分配给一个数组,使用
[]匿名数组,在使用exists测试时数组内部的值返回false? -
是的。懒惰,能够在一个语句中指定这一点会很好。否则我必须使用“undef”或在多个语句中使用。
标签: perl anonymous-arrays