rubyの配列、ハッシュ、シンボルあたりを整理する備忘録
ハッシュ、シンボル、配列あたりがごちゃごちゃしているので、まとめる。
備忘録です。
配列
シンプルな配列
array = [1,2,3,4,5]
[1, 2, 3, 4, 5]
要素を追加したり、色々なメソッドを使えます。
array.push(10)
[1, 2, 3, 4, 5, 10]
色んなものが配列の要素になれます。
違う種類のものが入っていてもOKです。
array = [1, "a", [1,2], [3, "b"], {name:"bob", age:18}]
[1, "a", [1, 2], [3, "b"], {:name=>"bob", :age=>18}]
要素を取り出してみます
array[2]
[1, 2]
さらに取り出してみます
array[2][1]
2
ハッシュもこの調子でできそうです。
array[4][:name]
"bob"
ハッシュ
hash = { orange: 100, apple: 200, banana:500 }
{:orange=>100, :apple=>200, :banana=>500}
hash = { a1: 100, b: 200, f:500 }
{:a1=>100, :b=>200, :f=>500}
ハッシュの値にハッシュも配列も入れられる
hash = { a: {aa: 110, ab:120, ac:[130, 140, 150, 160] }, b: 200, f:500 }
{:a=>{:aa=>110, :ab=>120, :ac=>[130, 140, 150, 160]}, :b=>200, :f=>500}
取り出すときは配列と同様に順番に指定していく
hash[:a][:ac][2]
150
ちなみにキーにハッシュや配列も入れることができるっぽい。
使う場面は想像できないが
hash = { {a: 120} => 20, [1,2,3] => 30 }
{{:a=>120}=>20, [1, 2, 3]=>30}
hash[[1,2,3]]
30
hash[{:a=>120}]
20
ハッシュのシンボルについて
keyとして使えるものに、シンボルというものがある。
シンボルは:key
のように使う
Fighter = { :Hanma => "Baki", :Hanayama => "Kaoru", :Orochi => "Doppo" } # 次のように宣言しても全く同じ # Fighter = { Hanma:"Baki", Hanayana: "Kaoru", Orochi: "Doppo" }
{:Hanma=>"Baki", :Hanayama=>"Kaoru", :Orochi=>"Doppo"}
取り出すときは、次のようにして使う
Fighter[:Hanma]
"Baki"
keyは文字列も指定できる。
文字列とシンボルが混在していても、問題なく処理される。
文字列とシンボルは別のものとして扱われるので、注意が必要。
# 同じkeyだと上書きされてしまう Underground_Fighter = { :Hanma => "Baki", :Hanayama => "Kaoru", :Orochi => "Doppo" , Hanma: "Jack" }
<main>:1: warning: key :Hanma is duplicated and overwritten on line 1
{:Hanma=>"Jack", :Hanayama=>"Kaoru", :Orochi=>"Doppo"}
Underground_Fighter[:Hanma]
"Jack"
# keyを:Hanmaと"Hanma"でハッシュに入れる Chika_Fighter = { :Hanma => "Baki", :Hanayama => "Kaoru", :Orochi => "Doppo" , "Hanma" => "Yujiro" }
{:Hanma=>"Baki", :Hanayama=>"Kaoru", :Orochi=>"Doppo", "Hanma"=>"Yujiro"}
Chika_Fighter["Hanma"]
"Yujiro"
Chika_Fighter[:Hanma]
"Baki"