ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Hashクラス

初期化

a = "a"=>"b", "c"=>"d"}
Hash["a", "b", "c", "d"]  #{"a"=>"b", "c"=>"d"}

a = Hash.new("DD")
a["first"]   #="DD"
a.default  #="DD"
a.default = "EE"
a["first"] #="EE"

a = Hash.new{|hash, key| hash[key] = nil}
a.["a"]  #=nil

Hashのキーや値を取得する

[]
keys
values
values_at : 引数と一致するキーの値を返す
fetch : キーと一致する値を返す、ない場合、引数2を返す
select : ブロックの結果を配列で返す

a = {1=>"a", 2=>"b", 3=>"c", 4=>"d"} 
a.values_at(2,4)  #["b", "d"]

a.fetch(2, "not")  #"b"
a.fetch(5, "not")  #"not"
a.fetch(5){|key| key % 2 == 0 }
false
a.select{|key, value| key %2 == 0}   
[[2, "b"],[4,"d"]]

Hashを変更する

[]=
delete
reject : ブロックの結果がTrueになった値を取り除いたハッシュを返す
reject! , delete_if : ブロックの結果がTrueの値を取り除いたハッシュで元のハッシュを更新する
replace : ハッシュを入れ替える。object_idは変更されない
shift : ハッシュの中の1組を取り除く
merge : 新しい組み合わせを既存に追加
merge!, update : 新しい組み合わせを既存に追加し元のハッシュに設定する
invert : keyとvalueを逆にする
clear

a = {1=>"a", 2=>"b", 3=>"c", 4=>"d"} 
a,reject{|key, value| key % 2 == 0 }
 => {1=>"a", 3=>"c"} 
a.delete_if{|key,value| key % 2 == 0 }
 => {1=>"a", 3=>"c"} 
a
 => {1=>"a", 3=>"c"} 
a.replace({1=>"a", 2=>"b", 3=>"c", 4=>"d"} )
=> {1=>"a", 2=>"b", 3=>"c", 4=>"d"} 

a.merge({5=>"f", 6=>"g"})
 => {5=>"f", 6=>"g", 1=>"a", 2=>"b", 3=>"c", 4=>"d"} 

a.invert
 => {"d"=>4, "c"=>3, "b"=>2, "a"=>1} 

Hashを調べる

length
size
empty?
has_key? , include? , key? , member? : ハッシュに一致するキーがある場合True
has_value? , value? : ハッシュに一致する値が有ればTrue

Hashの繰り返し

each, each_pair : keyとvalueを渡して繰り返す
each_key
each_value

Hashのソート

sort
sort{|a, b| a[1] <=> b[1]}

Hashを変換する

to_a : Hashを配列に変換する

a = {1=>"a", 2=>"b", 3=>"c", 4=>"d"} 
a.to_a
 => [[1, "a"], [2, "b"], [3, "c"], [4, "d"]]