Learning Perl(Perl語言入門)學習筆記(5)

第六章      散列
 
1、  散列是一種數據結構,可以包含任意多個值,並以“鍵”來尋找相應的值;鍵通常都是字符串,且可以是任意字符串,但彼此間不能相同,對應的值則不受此限制;散列中的元素沒有固定順序,只有“鍵-值對”的組合;鍵和值都是任意的標量,但鍵總是被當作字符串;
2、  訪問散列元素使用 $hash{$some_key} 的格式,鍵是字符串,也可以是任何表達式;散列變量名稱亦屬於獨立的名稱空間;對某個已經存在的散列元素賦值會覆蓋原有的值,對事先不存的散列元素賦值,散列元素會自動產生;
3、  訪問整個散列使用 %some_hash 的格式;散列和列表可以互相轉換(如:@any_array = %some_hash,此爲“展開”散列,順序可能會發生變化),因此,對散列賦值等於在列表上下文中賦值,其列表是由“鍵-值對”構成;
4、  散列可以使用一般賦值語法複製,如:%new_hash = %old_hash ,但不常用;常用的做法是以某種方式轉換散列,如建立反序散列可以使用類似:%inverse_hash = reverse  %any_hash
5、  爲避免在對散列賦值時難以分辨“鍵”、“值”的對應關係,可以使用大箭號來代替賦值列表中的任何逗號,當然,其一般用來實現“鍵=>值”這樣的對應;
6、  keys函數會返回當前散列的鍵列表,values函數會返回當前散列的值列表,當前散列無元素時,二者均返回空列表;新增元素至散列時,可能會重新排序;散列可以當成布爾表達式使用,即如果至少有一組“鍵-值對”,結果爲真,反之爲假;
7、  each函數可以遍歷整個散列的“鍵-值對”,返回值爲相應的“鍵-值對”,訪問最後一個元素後再一次調用將返回空列表;each函數常用於while循環的條件表達式,此時each函數調用返回給while的值在有可用“鍵-值對”時爲“2,否則爲“0(條件表達式爲標量上下文);
8、  exists函數用來查看某個是否存在於散列中(無論其是否被賦值),存在,返回“真”,否則爲“假”;delete函數用來從散列中移除指定的及其對應的
單一散列元素可以在雙引號內進行替換,但不能對類似於 “%hash” 的整個散列替換,因爲除了幾個指定的轉義字符(針對於printf函數,如%s等)外,百分號及其後面的散列名稱在雙引號內會原樣輸出;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章