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"]]