Perl有@var的1維Array
這是大家所熟悉的
至於要如何做出2維的Array呢?
在Perl裡面
如果@var是1維
那麼@@var就是2維!? 錯了!大錯特錯.... 我一開始就是這麼想的...
其實Perl的2維陣列 是透過reference(參照)所產生出來的
ex: my @one_dim = split(/ /, "a b c d e");
my @two_dim = (); # 此時的@two_dim還是1維的
$two_dim[0] = @one_dim; # @即是Reference, 此時的@two_dim就變2維的了!
for(my $i=0 ; $i<5 ; $i++ ){
print $two_dim[0][$i];
}
不過,這種方法有幾個缺點
缺點一:
就是,這種方法是利用「Reference」!
所以$two_dim[0]是參考了@one_dim的東西
而不是整個複製過來
因此,如果@one_dim的東西改變了
$two_dim[0]的東西(實際上也就是@one_dim的東西)也就跟著改變了!!!
缺點二:無法用foreach取得$two_dim[0]的個數
foreach( $two_dim[0] ){...}
這樣就變得很麻煩了...
如果當@two_dim有很多個element時
每一個element都需要一個1維的變數在儲存才行
而且這每一個element的名稱都要不一樣...這樣就會有砂鍋大的問題了!!!
沒有留言:
張貼留言