我正在使用地圖來提取二維數組的第一個元素。這是小代碼片段。瞭解此地圖行爲
my $array = [ [1,11,111], [2,22], undef, [4] ];
my @firstList = map { (defined $_) && $_->[0] } @$array;
所以在這裏,我期待地圖返回一個數組,其值爲undef或$ array的第一個元素。
但輸出與我所期望的不一樣。 對於undef,我得到'scalar'類型的元素。
如果我用下面的塊更改映射語句,那麼我會得到預期的結果。
my @firstList = map { $_->[0] } @$array;
請幫我理解這兩個map語句。
一個小的更正:'定義undef'返回'''''。 – Dallaylaen
我想知道爲什麼undef - > [0]可以工作(甚至在'strict'下)。發現它是[autovivified](http://en.wikipedia.org/wiki/Autovivification),即隱式設置爲原始數組**中的[] **。 – Dallaylaen
@Dallaylaen:這讓足夠多的人知道CPAN在http://search.cpan.org/perldoc?autovivification上有一個「autovivification」模塊,它允許你使用「no autovivification」命令禁用它; –