Re: [問題] Hash of array / Array of hash

看板Perl作者時間7年前 (2017/05/24 00:33), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串2/2 (看更多)
Array of Hash 中文為「Hash 的 Array」 用比較長的形容就是「用 Hash 作為元素組成的 Array」 所以 Array 中包含的每個元素都是一個 Hash But, Array 的元素只能存 scalar 不能存 Hash 啊 這怎麼辦! 在 Perl 會改為存 Hash 的 reference 類似下列的例子 %hash1 = ("k0" => "v0", "k1" => "v1", "k2" => "v2") %hash2 = ("k3" => "v3", "k4" => "v4") array @a ┌───┐ ┌─┬─┬─┬─┬─┬─┐ │$a[0] ├→│k0│v0│k1│v1│k2│v2│ $a[0] = \%hash1 │ │ └─┴─┴─┴─┴─┴─┘ ├───┤ ┌─┬─┬─┬─┐ │$a[1] ├→│k3│v3│k4│v4│$a[1] = \%hash2 │ │ └─┴─┴─┴─┘ ├───┤ │......│ 同理 Hash of Array 中文為「Array 的 Hash」 Hash 是 key/value pair 這裡通常指的是 Hash 的 value 儲存的是一個 Array But, key/value 都只能存 scalar 啊! 這裡一樣利用 reference 的技巧 把 array 的 reference 存進 value 類似下列的例子 @a = ("a0", "a1", "a2", "a3") @b = ("b0", "b1", "b2") hash %h ┌─┬───┐ ┌─┬─┬─┬─┐ │k0│$h{k0}├→│a0│a1│a2│a3│ $h{k0} = \@a │ │ │ └─┴─┴─┴─┘ ├─┼───┤ ┌─┬─┬─┐ │k1│$h{k1}├→│b0│b1│b2│ $h{k1} = \@b │ │ │ └─┴─┴─┘ ├─┼───┤ │ ...... │ 不知道這樣看起來有沒有清楚 ※ 引述《aresnmars (哎喲)》之銘言: : 請教各位版友: : 小弟是初學Perl的新手。 : 想請教各位版友們常見的問題: : "Hash of array" 以及 "Array of hash"。 : 是否能請教關於這兩者的不同? : 查了許多網頁,得到的資料較零散,於是在此發問了。 : 如發問不妥,我會自行刪除。 : 如果有版友們能熱心回答,謝謝不吝賜教了。 : 感謝您們。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.203.107 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1495557187.A.CA8.html

05/24 04:17, , 1F
我正努力的消化中。 謝謝您這樣熱心的講解!
05/24 04:17, 1F

05/24 05:01, , 2F
嘩這圖要畫多久啊!推一個
05/24 05:01, 2F

05/24 05:03, , 3F
感謝lgen大解說.所以HoA的關鍵在於value以array存,對嗎
05/24 05:03, 3F

05/24 21:57, , 4F
value存的是reference,類似「Array的指標」這樣的觀念
05/24 21:57, 4F

05/24 21:58, , 5F
因為主要是解釋HoA和AoH的架構,就沒有深入解釋reference
05/24 21:58, 5F

05/24 21:59, , 6F
想再深入了解reference的話,版上或網路也有很多資料
05/24 21:59, 6F

05/25 14:04, , 7F
推喔(Y)
05/25 14:04, 7F
文章代碼(AID): #1P96H3oe (Perl)
討論串 (同標題文章)
文章代碼(AID): #1P96H3oe (Perl)