自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Perl哈希表的存取和常用函數(shù)

開發(fā) 架構(gòu)
Perl哈希表是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類似,可以將值存放到其中,或者從中取回值。但是,和數(shù)組不同的是,Perl哈希表的索引不是數(shù)字,而是名字。

本文和大家重點(diǎn)討論一下Perl哈希表的概念,Perl哈希表是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類似,可以將值存放到其中,或者從中取回值。相信通過本文的介紹你一會(huì)讓你有所收獲。

Perl基礎(chǔ) Perl哈希表 

一、什么是Perl哈希表

Perl哈希表是一種數(shù)據(jù)結(jié)構(gòu),和數(shù)組類似,可以將值存放到其中,或者從中取回值。但是,和數(shù)組不同的是,其索引不是數(shù)字,而是名字。也就是說,索引(這里,我們將它叫key)不是數(shù)字而是任意的唯一的字符串。

key可以是任意的字符串,你可以使用任何的字符串作為key,但它們是唯一的。
另一種思考hash的方法是,把它看作一堆數(shù)據(jù)(abarrelofdata),每一個(gè)數(shù)據(jù)都有一個(gè)相應(yīng)的標(biāo)簽??梢酝ㄟ^標(biāo)簽訪問此標(biāo)簽對(duì)應(yīng)的元素。但其中是沒有“第一個(gè)”元素的概念的。在數(shù)組中,數(shù)組元素從0,1,2開始編號(hào)。但在hash中,沒有確定的順序,因此也沒有第一個(gè)元素。只是一些key/value對(duì)的集合。

keys和values均為任意的標(biāo)量,但keys通常轉(zhuǎn)換為字符串。因此,如果將表達(dá)式50/20作為keys,則其通常被轉(zhuǎn)換為3字符的字符串“2.5”。
由于Perl的“沒有不必要的限制”的設(shè)計(jì)哲學(xué):hash可以是任意大小,從空hash(沒有key/value對(duì)),到任何你內(nèi)存允許的大小。
keys是唯一的,但values可以重復(fù)。hash的value可以是數(shù)字,字符串,undef,或者它們的混合,但key是唯一的。
為什么使用Hash
可以把hash看作一個(gè)簡(jiǎn)單的數(shù)據(jù)庫,其中每一個(gè)key下面可以有一塊數(shù)據(jù)。如果你的任務(wù)是關(guān)于:“查詢重復(fù)的”,“唯一的”,“交叉引用的”,“查詢表”,則hash很可能在這類應(yīng)用中幫上你的忙。

二、Perl哈希表元素的存取

要訪問hash元素,可以使用下面的語法:$hash{$some_key}
這和訪問數(shù)組元素的方法有些類似,這里下標(biāo)(key)上使用的是花括號(hào)({}),而不是方括號(hào)([])。現(xiàn)在key的表達(dá)式是字符串,而非數(shù)字。
hash的名字和Perl中其它的標(biāo)識(shí)符的命名規(guī)則是一樣的(字母,數(shù)字,下劃線組成,但不能由數(shù)字開頭)。
訪問不存在的hash元素將得到undef。

1.作為整體的hash

要引用整個(gè)hash,使用百分號(hào)(%)作為前綴。
為了方便,hash可以轉(zhuǎn)換為列表,或者反過來。

2.Hash賦值

可以使用如下的語法在hash之間拷貝:
%new_hash=%old_hash;
將hash轉(zhuǎn)變成其它形式更加常見。例如,我們可以將hash反轉(zhuǎn):
%inverse_hash=reverse%any_hash;

3.大箭頭符號(hào)(=>)

當(dāng)給hash賦值時(shí),有時(shí)并不明顯哪些元素是keys,那些是values,因此發(fā)明了大箭頭符號(hào)(=>)。在需要逗號(hào)的時(shí)候,都可以使用大箭頭符號(hào)替換。
如:
 

  1. my%last_name=(  
  2. "www"=>1,  
  3. "eee"=>2,  
  4. );  

 

三、Perl哈希表函數(shù)

某些有用的函數(shù)可以對(duì)整個(gè)hash進(jìn)行操作。

1.keys和values函數(shù)

keys函數(shù)會(huì)返回此hash的所有keys,values函數(shù)將返回所有的values。如果hash中沒有元素,則此函數(shù)將返回空列表。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3);  
  2. printmy@k=keys%hash;  
  3. printmy@v=values%hash;  

 2.each函數(shù)

如果想迭代hash的每一個(gè)元素,一種通常的方法是使用each函數(shù),它將返回key/value對(duì)應(yīng)的2個(gè)元素列表。
當(dāng)對(duì)同一個(gè)hash函數(shù)進(jìn)行一次迭代時(shí),將返回下一個(gè)key/value對(duì),直到所有的元素均被訪問。如果沒有更多的key/value對(duì),則each函數(shù)將返回空表。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3);  
  2. while(($key,$value)=each%hash)  
  3. {  
  4. print"$key=>$value\n";  
  5. }  

 當(dāng)然,each返回的key/vlaue對(duì),順序是混亂的(它其順序和keys和values函數(shù)返回的順序相同)。如果想將其按序排放,可以對(duì)它們排序(使用sort)。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);  
  2. foreach$key(sortkeys%hash)  
  3. {  
  4. $value=$hash{$key};  
  5. print"$key=>$value\n";  
  6. }  

 四、Perl哈希表的通常用法

1.exists函數(shù)

要查看hash中是否存在某個(gè)key,可以使用exists函數(shù),如果hash中存在此key,則返回true,與是否有對(duì)應(yīng)的value無關(guān)。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);  
  2. if(exists$hash{'a'})  
  3. {  
  4. print"true";  
  5. }  

 2.delete函數(shù)

delete函數(shù)將某個(gè)給定的key(包括其對(duì)應(yīng)的value)從hash中刪除。如果不存在這個(gè)key,則什么也不做,不會(huì)有警告或者錯(cuò)誤信息。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);  
  2. delete$hash{'a'};  
  3. foreach$key(sortkeys%hash)  
  4. {  
  5. $value=$hash{$key};  
  6. print"$key=>$value\n";  
  7. }  

 3.hash元素的內(nèi)插

你可以在雙引號(hào)的字符串中使用單個(gè)hash元素,但不支持整個(gè)hash的內(nèi)插。
 

  1. my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);  
  2. foreach$key(sortkeys%hash)  
  3. {  
  4. print"$key=>$hash{$key}\n";  
  5. }  

【編輯推薦】

  1. 四種方法實(shí)現(xiàn)Perl哈希表創(chuàng)建
  2. Perl哈希表用法解析
  3. 實(shí)例解析Perl守護(hù)進(jìn)程用法
  4. Perl模式匹配經(jīng)驗(yàn)總結(jié)
  5. 技術(shù)分享 利用Perl哈希表建立鍵-值數(shù)據(jù)映射

 

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-07-13 16:34:34

Perl 哈希表

2010-07-13 16:20:21

Perl 哈希表

2010-07-16 13:10:36

Perl哈希表

2010-07-19 09:28:37

Perl關(guān)聯(lián)數(shù)組

2010-07-19 13:49:17

Perl函數(shù)

2010-07-16 13:50:53

Perl哈希表

2010-07-16 13:21:26

Perl哈希表

2023-02-13 08:02:08

哈希函數(shù)哈希表搜索樹

2010-07-20 09:52:27

Perl構(gòu)造函數(shù)

2010-07-21 14:18:27

Perl函數(shù)

2010-07-19 10:01:57

Perl函數(shù)

2010-07-19 14:20:57

Perl函數(shù)

2010-07-26 13:13:33

Perl函數(shù)參數(shù)

2023-11-24 17:58:03

Python哈希

2021-04-29 10:08:10

數(shù)據(jù)結(jié)構(gòu)哈希表

2010-07-19 13:32:55

Perl用戶函數(shù)

2010-07-23 15:59:33

Perl encode

2009-06-11 16:01:17

EJB容器

2010-07-13 10:33:49

Perl用戶函數(shù)

2010-07-13 10:13:35

Perl內(nèi)部函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)