1
1

More than 3 years have passed since last update.

【ruby】『ruby入門(メモ5)』恐竜hash(連想配列)を作ってみよう(windows10+ruby2.3.3)

Posted at

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が書き換えられる

参考url

dotinstall(ruby入門)
逆引きruby

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1