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

###０．初めに
今回も参考urlの内容を自分なりに改修してみた。
ハッシュ配列に恐竜を追加できたのはうれしい。

###１．ハッシュとは
key(数値でも文字列でも可)とvalueの組み合わせを登録できる連想配列。

```
書式：ハッシュ配列名={key1 => value1,key2 => value2,...}
```
###２．ハッシュのkey集合
```
書式：ハッシュ配列名.keys
```

###３．ハッシュのvalue集合

```
書式：ハッシュ配列名.values
```

###４．ハッシュの要素(key,value)の追加(１)

```
書式：ハッシュ配列名[新しいkey]=新しいvalue
```

###５．ハッシュの要素(key,value)の追加(２)

```
書式：ハッシュ配列名.store(新しいkey,新しいvalue)
```
###６．ハッシュのkeyの存在確認(存在：true,存在しない:false)

```
書式：ハッシュ配列名.has_key?(key名)
```


###７.ハッシュを使ったコード例

```ruby: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入門)](https://dotinstall.com/lessons/basic_ruby_v3)
[逆引きruby](https://scrapbox.io/rubytips/)