ハッシュの基本操作。
>> seeds = {"unk"=>0, "par"=>3, "rog"=>1} => {"unk"=>0, "par"=>3, "rog"=>1} >> seeds["par"] => 3 >> seeds_s = {unk: 0, par: 3, rog: 1} => {:unk=>0, :par=>3, :rog=>1} >> seeds_s[:par] => 3 >> a = seeds_s.fetch(:par) => 3 >> a = seeds_s.fetch(:zwo) Traceback (most recent call last): 1: from (irb):83:in `fetch` KeyError (key not found: :zwo) # 存在しないキー指定するとエラー >> seeds_s.store(:zwo, 2) => 2 >> seeds_s => {:unk=>0, :par=>3, :rog=>1, :zwo=>2} >> seeds_s.size => 4 # keyの存在判定 >> seeds_s.include?(:super) => false >> seeds_s.include?(:zwo) => true
keyを変数から設定。
>> seeds_s = {unk: 0, par: 3, rog: 1} => {:unk=>0, :par=>3, :rog=>1} >> a = "zog" => "zog" >> seeds_s.store(a.to_s, 9) => 9 >> seeds_s => {:unk=>0, :par=>3, :rog=>1, "zog"=>9}
イテレータの操作。
# イテレータ(繰り返しメソッド) >> seeds_s.each {|s| puts s} unk 0 par 3 rog 1 zwo 2 => {:unk=>0, :par=>3, :rog=>1, :zwo=>2} >> seeds_s.each {|key,value| puts key.to_s + ":"+ value.to_s} unk:0 par:3 rog:1 zwo:2 => {:unk=>0, :par=>3, :rog=>1, :zwo=>2} # each_key, each_valueでキーのみ、値のみの取得も可能 # 配列に変換 >> seeds_a = seeds_s.map {|k,v| [k,v]} => [[:unk, 0], [:par, 3], [:rog, 1], [:zwo, 2]] >> seeds_a[0] => [:unk, 0] >> seeds_a = seeds_s.map {|k,v| {k.to_sym=>v}} => [{:unk=>0}, {:par=>3}, {:rog=>1}, {:zwo=>2}] >> seeds_a[0] => {:unk=>0} >> seeds_a[0][:unk] => 0
その他。
# デフォルト指定(未登録キー指定時の返却) >> z = Hash.new("default") => {} >> z => {} >> z[:key] => "default"