這是個類似陣列的容器型資料型態,裡面的資料是一組一組相互對應,我們會稱為 key 跟 value,與陣列不同的是,這裡面沒有排序,不能透過[索引]方式取出內容,且用大括號包起來。
Hash 有以下的幾個特色:
最容易想像的資料型態就像學生的成績紀錄,如同下面的表示,name 和 score 都是這個 hash 的 key,可以想像成一個主要的標題,分別對應的內容就是'Sean', 100 這兩個值。
student_score = { name: 'Sean', score: 100 }
list = {:name => "Sean", :name => "Tom"} #出錯,不能重複指定key
profile = { :name => 'Sean', :age => 20 }
profile = { name: 'Sean', age: 20 }
profile = { name: 'Sean', age: 20 }
# 取得name的value
puts profile["name"] # nil
puts profile[:name] # Sean
# 取得age的value
puts profile["age"] # nil
puts profile[:age] # 20
#拿取全部的keys or values
profile.keys #拿取所有key => name,age
profile.values #拿取所有value => "Sean",20
character = { name: 'warrier', age: 20 }
character[:power] = 100
p character #{:name=>"warrier", :age=>20, :power=>100}
可以用 length 或 size 找到內部有幾組 key 和 value
profile = {name: "Sean", age: 25, power:100, ability: "Ruby"}
p profile.length # 4
p h1.size # 4
參考資料: