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

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

Perl教學 第9篇 關聯數組之二

[摘要]五、創建關聯數組可以用單個賦值語句創建關聯數組,如:%fruit = ("apples",17,"bananas",9,"oranges","none");此語句創建的關聯數組含有下面三個元素: ·下標為ap...
五、創建關聯數組
可以用單個賦值語句創建關聯數組,如:
%fruit = ("apples",17,"bananas",9,"oranges","none");
此語句創建的關聯數組含有下面三個元素:

·下標為apples的元素,值為17
·下標為bananas的元素,值為9
·下標為oranges的元素,值為none
注:用列表給關聯數組賦值時,Perl5允許使用"=>"或","來分隔下標與值,用"=>"可讀性更好些,上面語句等效于:
%fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");
六、從數組變量復制到關聯數組
與列表一樣,也可以通過數組變量創建關聯數組,當然,其元素數目應該為偶數,如:
@fruit = ("apples",17,"bananas",9,"oranges","none");
%fruit = @fruit;
反之,可以把關聯數組賦給數組變量,如:
%fruit = ("grapes",11,"lemons",27);
@fruit = %fruit;
注意,此語句中元素次序未定義,那么數組變量@fruit可能為("grapes",11,"lemons",27)或("lemons",27,"grapes",11)。
關聯數組變量之間可以直接賦值,如:%fruit2 = %fruit1; 還可以把數組變量同時賦給一些簡單變量和一個關聯數組變量,如:
($var1, $var2, %myarray) = @list;
此語句把@list的第一個元素賦給$var1,第二個賦給$var2,其余的賦給%myarray。
最后,關聯數組可以通過返回值為列表的內嵌函數或用戶定義的子程序來創建,下例中把split()函數的返回值--一個列表--賦給一個關聯數組變量。
1: #!/usr/local/bin/perl
2:
3: $inputline = ;
4: $inputline =~ s/^\s+ \s+\n$//g;
5: %fruit = split(/\s+/, $inputline);
6: print ("Number of bananas: $fruit{\"bananas\"}\n");
運行結果如下:
oranges 5 apples 7 bananas 11 cherries 6
Number of bananas: 11
七、元素的增刪
增加元素已經講過,可以通過給一個未出現過的元素賦值來向關聯數組中增加新元素,如$fruit{"lime"} = 1;創建下標為lime、值為1的新元素。
刪除元素的方法是用內嵌函數delete,如欲刪除上述元素,則:
delete ($fruit{"lime"});
注意:
1、一定要使用delete函數來刪除關聯數組的元素,這是唯一的方法。
2、一定不要對關聯數組使用內嵌函數push、pop、shift及splice,因為其元素位置是隨機的。
八、列出數組的索引和值
上面已經提到,keys()函數返回關聯數組下標的列表,如:

%fruit = ("apples", 9,
"bananas", 23,
"cherries", 11);
@fruitsubs = keys(%fruits);

這里,@fruitsubs被賦給apples、bananas、cherries構成的列表,再次提請注意,此列表沒有次序,若想按字母順序排列,可使用sort()函數。
@fruitindexes = sort keys(%fruits);
這樣結果為("apples","bananas","cherries")。類似的,內嵌函數values()返回關聯數組值的列表,如:

%fruit = ("apples", 9,
"bananas", 23,
"cherries", 11);
@fruitvalues = values(%fruits);

這里,@fruitvalues可能的結果為(9,23.11),次序可能不同。
九、用關聯數組循環
前面已經出現過利用keys()函數的foreach循環語句,這種循環效率比較低,因為每返回一個下標,還得再去尋找其值,如:

foreach $holder (keys(%records)){
$record = $records{$holder};
}
Perl提供一種更有效的循環方式,使用內嵌函數each(),如:

%records = ("Maris", 61, "Aaron", 755, "Young", 511);
while (($holder, $record) = each(%records)) {
# stuff goes here
}
each()函數每次返回一個雙元素的列表,其第一個元素為下標,第二個元素為相應的值,最后返回一個空列表。
注意:千萬不要在each()循環中添加或刪除元素,否則會產生不可預料的后果。
十、用關聯數組創建數據結構
用關聯數組可以模擬在其它高級語言中常見的多種數據結構,本節講述如何用之實現:鏈表、結構和樹。
1、(單)鏈表
鏈表是一種比較簡單的數據結構,可以按一定的次序存貯值。每個元素含有兩個域,一個是值,一個是引用(或稱指針),指向鏈表中下一個元素。一個特殊的頭指針指向鏈表的第一個元素。
在Perl中,鏈表很容易用關聯數組實現,因為一個元素的值可以作為下一個元素的索引。下例為按字母順序排列的單詞鏈表:

%words = ("abel", "baker",
"baker", "charlie",
"charlie", "delta",
"delta", "");
$header = "abel";




主站蜘蛛池模板: 青草视频在线观看国产 | 五月婷婷影视 | 青娱乐在线观看 | 亚洲国产精品成人精品小说 | 亚洲最大综合网 | 伊人五月婷 | 天天天操天天天干 | 五色婷婷| 手机亚洲第一页 | 热久久最新视频 | 日韩欧美亚洲综合 | 中文字幕波多野不卡一区 | 性高湖久久久久久久久aaaaa | 午夜免费影视 | 日韩免费视频在线观看 | 日本一区二区免费高清视频 | 香蕉久久夜色精品国产小说 | 手机在线成人精品视频网 | 日韩精品欧美国产精品忘忧草 | 一二三四视频免费观看影视 | 日韩高清的天堂在线观看免费 | 婷婷免费在线 | 欧美又大又粗又爽又硬 | 日本中文字幕视频 | 一二三四影视手机在线观看视频 | 亚洲美女综合 | 日本高清v| 最近韩国中文字幕更新 | 青娱乐免费视频在线观看 | 亚洲成a人一区二区三区 | 日本porno动漫 | 涩涩国产精品福利在线观看 | 亚洲 欧美 国产另类首页 | 日韩精品一区二区三区不卡 | 亚洲图片另类 | 日本欧美一区二区三区在线观看 | 日韩大片在线 | 欧美一区二区久久精品 | 亚洲永久免费视频 | 天堂资源网 | 中文字幕第9页 |