六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Perl教學 第12篇 Perl5中的引用之4

[摘要]五、多維數組語句@array = list;可以創建數組的引用,中括號可以創建匿名數組的引用。下面語句為用于畫圖的三維數組的例子:$line = ['solid' , 'black' , ['1','2','3'] ,...
五、多維數組
語句@array = list;可以創建數組的引用,中括號可以創建匿名數組的引用。下面語句為用于畫圖的三維數組的例子:
$line = ['solid' , 'black' , ['1','2','3'] , ['4','5','6']];
此語句建立了一個含四個元素的三維數組,變量$line指向該數組。前兩個元素是標量,存貯線條的類型和顏色,后兩個元素是匿名數組的引用,存貯線條的起點和終點。訪問其元素語法如下:

$arrayReference->[$index] single-dimensional array
$arrayReference->[$index1][$index2] two-dimensional array
$arrayReference->[$index1][$index2][$index3] three-dimensional array
可以創建在你的智力、設計經驗和計算機的內存允許的情況下極盡復雜的結構,但最好對可能讀到或管理你的代碼的人友好一些--盡量使代碼簡單些。另一方面,如果你想向別人炫耀你的編程能力,Perl給你足夠的機會和能力編寫連自己都難免糊涂的代碼。:)
建議:當你想使用多于三維的數組時,最好考慮使用其它數據結構來簡化代碼。
下面為創建和使用二維數組的例子:

1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array references
4 #
5 $line = ['solid', 'black', ['1','2','3'] , ['4', '5', '6']];
6 print "\$line->[0] = $line->[0] \n";
7 print "\$line->[1] = $line->[1] \n";
8 print "\$line->[2][0] = $line->[2][0] \n";
9 print "\$line->[2][1] = $line->[2][1] \n";
10 print "\$line->[2][2] = $line->[2][2] \n";
11 print "\$line->[3][0] = $line->[3][0] \n";
12 print "\$line->[3][1] = $line->[3][1] \n";
13 print "\$ine->[3][2] = $line->[3][2] \n";
14 print "\n"; # The obligatory output beautifier.
結果輸出如下:

$line->[0] = solid
$line->[1] = black
$line->[2][0] = 1
$line->[2][1] = 2
$line->[2][2] = 3
$line->[3][0] = 4
$line->[3][1] = 5
$line->[3][2] = 6
那么三維數組又如何呢?下面是上例略為改動的版本。

1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array references again
4 #
5 $line = ['solid', 'black', ['1','2','3', ['4', '5', '6']]];
6 print "\$line->[0] = $line->[0] \n";
7 print "\$line->[1] = $line->[1] \n";
8 print "\$line->[2][0] = $line->[2][0] \n";
9 print "\$line->[2][1] = $line->[2][1] \n";
10 print "\$line->[2][2] = $line->[2][2] \n";
11 print "\$line->[2][3][0] = $line->[2][3][0] \n";
12 print "\$line->[2][3][1] = $line->[2][3][1] \n";
13 print "\$line->[2][3][2] = $line->[2][3][2] \n";
14 print "\n";
結果輸出如下:

$line->[0] = solid
$line->[1] = black
$line->[2][0] = 1
$line->[2][1] = 2
$line->[2][2] = 3
$line->[2][3][0] = 4
$line->[2][3][1] = 5
$line->[2][3][2] = 6
訪問第三層元素的方式形如$line->[2][3][0],類似于C語言中的Array_pointer[2][3][0]。本例中,下標均為數字,當然亦可用變量代替。用這種方法可以把數組和哈希表結合起來構成復雜的結構,如下:

1 #!/usr/bin/perl
2 #
3 # Using Multi-dimensional Array and Hash references
4 #
5 %cube = (
6 '0', ['0', '0', '0'],
7 '1', ['0', '0', '1'],
8 '2', ['0', '1', '0'],
9 '3', ['0', '1', '1'],
10 '4', ['1', '0', '0'],
11 '5', ['1', '0', '1'],
12 '6', ['1', '1', '0'],
13 '7', ['1', '1', '1']
14 );
15 $pointer = \%cube;
16 print "\n Da Cube \n";
17 foreach $i (sort keys %$pointer) {
18 $list = $$pointer{$i};
19 $x = $list->[0];
20 $y = $list->[1];
21 $z = $list->[2];
22 printf " Point $i = $x,$y,$z \n";
23 }
結果輸出如下:

Da Cube
Point 0 = 0,0,0
Point 1 = 0,0,1
Point 2 = 0,1,0
Point 3 = 0,1,1
Point 4 = 1,0,0
Point 5 = 1,0,1
Point 6 = 1,1,0
Point 7 = 1,1,1
這是一個定義立方體的例子。%cube中保存的是點號和坐標,坐標是個含三個數字的數組。變量$list獲取坐標數組的引用:$list = $$ pointer{$i}; 然后訪問各坐標值:$x = $list->[0]; ... 也可用如下方法給$x、$y和$z賦值:($x,$y,$z) = @$list;
使用哈希表和數組時,用$和用->是類似的,對數組而言下面兩個語句等效:
$$names[0] = "kamran";
$names->[0] = "kamran";
對哈希表而言下面兩個語句等效:
$$lastnames{"kamran"} = "Husain";
$lastnames->{"kamran"} = "Husain";
Perl中的數組可以在運行中創建和擴展。當數組的引用第一次在等式左邊出現時,該數組自動被創建,簡單變量和多維數組也是一樣。如下句,如果數組contours不存在,則被創建:
$contours[$x][$y][$z] = &xlate($mouseX, $mouseY);




主站蜘蛛池模板: 偷自视频区视频真实在线 | 亚洲日本国产 | 日日天干夜夜人人添 | 亚洲综合中文网 | 四虎国产精品免费观看 | 日韩欧美视频一区 | 亚洲欧美日韩精品一区 | 一级做性色a爰片久久毛片免费 | 亚洲三级一区 | 在线观看91精品国产下载 | 特黄一级黄色片 | 四虎成人影院网址 | 亚洲ww| 天天噜噜揉揉狠狠夜夜 | 青青青免费观看在线视频网站 | 天天爱天天舔 | 色噜噜在线 | 日本高清免费不卡在线播放 | 青娱乐在线视频免费观看 | 色资源网 | 深爱激情五月网 | 在线观看亚洲精品专区 | 色狠狠综合 | 屁屁影院在线播放 | 在线视频亚洲一区 | 欧美视频一区二区 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片免费看 | 青草免费在线 | 新版天堂中文资源8在线 | 中文天堂网 | 亚洲小视频在线观看 | 欧美一区综合 | 亚洲va久久久噜噜噜久久狠狠 | 中文字幕字幕乱码熟 | 星辰影院在线观看 | 日韩欧美国产另类 | 天天色天天看 | 青青青爽视频在线观看 | 日日爱影视 | 欧美亚洲韩国 | 日本香蕉视频在线观看 |