Ruby 〜Hashオブジェクト覚書〜
Hashオブジェクトについて
Hashオブジェクトはキーとバリューの組み合わせでデータ表現できるオブジェクト
通常Hashオブジェクトを使うには{}中括弧を使う。
irb(main):011:0> user1 = { name:'一郎'} => {:name=>"一郎"} irb(main):012:0> user2 = { id: 2 ,name: '二郎'} => {:id=>2, :name=>"二郎"} irb(main):013:0>
Hashオブジェクトから任意の値を取り出す方法
=> {:id=>2, :name=>"二郎"} irb(main):013:0> user1[:name] => "一郎" irb(main):014:0> user2[:name] => "二郎" irb(main):015:0> user2[:id] => 2 irb(main):016:0>
ただし上記書き方だとキーをString型で指定できないの注意が必要。
irb(main):016:0> user1['name'] => nil irb(main):017:0>
キーをStringで書きたい場合は次のように書く。
irb(main):017:0> user3 = { 'id'=>3,'name'=>'三郎'} => {"id"=>3, "name"=>"三郎"} irb(main):018:0> user3['id'] => 3 irb(main):019:0> user3['name'] => "三郎" irb(main):020:0>
階層構造でHashオブジェクトの作成について
irb(main):021:0> user4 = { irb(main):022:1* name: '四郎', irb(main):023:1* test_results: { irb(main):024:2* math: 70, irb(main):025:2* science: 80 irb(main):026:2> } irb(main):027:1> } => {:name=>"四郎", :test_results=>{:math=>70, :science=>80}} irb(main):028:0> user4[:test_results][:math] => 70 irb(main):029:0>
値の書き換えについて
irb(main):032:0> user4[:test_results][:math] = 90 => 90 irb(main):033:0> user4 => {:name=>"四郎", :test_results=>{:math=>90, :science=>80}} irb(main):034:0>
keys/valuesメソッドについて
Hashオブジェクトではkeysメソッドでキーの配列を取得でき、valuesメソッドで値の配列を取得できる
irb(main):034:0> user4.keys => [:name, :test_results] irb(main):035:0> user4.values => ["四郎", {:math=>90, :science=>80}] irb(main):036:0>
Hashオブジェクトでのeachメソッドの使い方
irb(main):040:0> user4.each do | k,v| irb(main):041:1* puts "#{k} = #{v}" irb(main):042:1> end name = 四郎 test_results = {:math=>90, :science=>80} => {:name=>"四郎", :test_results=>{:math=>90, :science=>80}} irb(main):043:0>
一部のキーやバリューの値削除について
deleteメソッドで第一引数に削除対象のキーを指定する
irb(main):044:0> user4.delete(:test_results) => {:math=>90, :science=>80, :name=>90} irb(main):045:0> user4 => {:name=>"四郎"} irb(main):046:0>