Re: [問題] Hash of array / Array of hash
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
05/24 05:03, 3F
→
05/24 21:57, , 4F
05/24 21:57, 4F
→
05/24 21:58, , 5F
05/24 21:58, 5F
→
05/24 21:59, , 6F
05/24 21:59, 6F
推
05/25 14:04, , 7F
05/25 14:04, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章