0.初めに
今回も参考urlの内容を自分なりに改修してみた。
ハッシュ配列に恐竜を追加できたのはうれしい。
1.ハッシュとは
key(数値でも文字列でも可)とvalueの組み合わせを登録できる連想配列。
書式:ハッシュ配列名={key1 => value1,key2 => value2,...}
2.ハッシュのkey集合
書式:ハッシュ配列名.keys
3.ハッシュのvalue集合
書式:ハッシュ配列名.values
4.ハッシュの要素(key,value)の追加(1)
書式:ハッシュ配列名[新しいkey]=新しいvalue
5.ハッシュの要素(key,value)の追加(2)
書式:ハッシュ配列名.store(新しいkey,新しいvalue)
6.ハッシュのkeyの存在確認(存在:true,存在しない:false)
書式:ハッシュ配列名.has_key?(key名)
7.ハッシュを使ったコード例
hash_dinosor.rb
=begin
Tyrannosaurus:ティラノサウルス
Velociraptor:ヴェロキラプトル
Stegosaurus:ステゴサウルス
Triceratops:トリケラトプス
Brachiosaurus:ブラキオサウルス
=end
# ハッシュ:keyとvalueの組み合わせを登録できる連想配列
hash_dinosor={'Velociraptor' => 132,'Stegosaurus' => 120}
puts hash_dinosor
# keyの集合
puts hash_dinosor.keys
# valueの集合
puts hash_dinosor.values
# valueへのアクセスはハッシュ[key]
puts hash_dinosor['Velociraptor']
# 入力したkey,valueの組み合わせをhash_dinosorに追加する。
puts '-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex)'
# chompで最後の改行を取り除く(keyの入力)
key_new=gets.to_s.chomp
puts '-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...)'
# valueの入力
value_new=gets.to_i
hash_dinosor[key_new]=value_new
# hash_dinosorの表示
p hash_dinosor
# 新しく登録したkey_newのvalueを表示
p hash_dinosor[key_new]
# 入力したkey,valueの組み合わせをstoreメソッドによりhash_dinosorに追加する。
puts '-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex) store'
# chompで最後の改行を取り除く(keyの入力)
key_new2=gets.to_s.chomp
puts '-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...) store'
# valueの入力
value_new2=gets.to_i
hash_dinosor.store(key_new2,value_new2)
# hash_dinosorの表示
p hash_dinosor
# 新しく登録したkey_new2のvalueを表示
p hash_dinosor[key_new2]
# new_keyがhash_dinosorに存在するか
p hash_dinosor.has_key?(key_new)
# 222がhash_dinosorに存在するか
p hash_dinosor.has_key?(222)
★実行例(登録済みキーと違うキーを追加した場合)
c:\ruby_pg>ruby hash_dinosor.rb
{"Velociraptor"=>132, "Stegosaurus"=>120}
Velociraptor
Stegosaurus
132
120
132
-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex)
Tyrannosaurus
-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...)
104
{"Velociraptor"=>132, "Stegosaurus"=>120, "Tyrannosaurus"=>104}
104
-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex) store
IndominusRex
-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...) store
108
{"Velociraptor"=>132, "Stegosaurus"=>120, "Tyrannosaurus"=>104, "IndominusRex"=>108}
108
true
false
c:\ruby_pg>
★実行例(登録済みキーと同じキーを追加した場合)
c:\ruby_pg>ruby hash_dinosor.rb
{"Velociraptor"=>132, "Stegosaurus"=>120}
Velociraptor
Stegosaurus
132
120
132
-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex)
Velociraptor
-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...)
120
{"Velociraptor"=>120, "Stegosaurus"=>120}
120
-----add dinosor name (ex.Tyrannosaurus,Triceratops,IndominusRex) store
Stegosaurus
-----add dinosor speed (ex.Tyrannosaurus:104,Triceratops:110,IndominusRex:108...) store
135
{"Velociraptor"=>120, "Stegosaurus"=>135}
135
true
false
c:\ruby_pg>
★★実行結果からわかること
- storeメソッド、ハッシュ[新しいkey]=新しいvalueで新しい要素が追加できる
- 登録済みキーと同じキーを登録するとvalueが書き換えられる