【本日の学習内容:配列, ハッシュ】
配列とハッシュについて学習しました。
【配列】
複数のデータを格納することができるクラス。
配列は以下のように定義する。
users = ["Saito", "Tanaka", "Suzuki", "Yamada"]
ages = [22, 34, 12, 45]
配列から要素を取り出すには、以下のように記述する。
ages = [22, 34, 12, 45]
# 配列を格納した変数に添え字(インデックス番号)をつける
puts ages[0]
出力結果
22
配列は繰り返し処理のeachとの組み合わせでよく使われる。
users = ["Saito", "Tanaka", "Suzuki", "Yamada"]
users.each do |users|
puts "Hello!! #{name}."
end
【ハッシュ】
配列と同様に複数のデータを扱うことができるクラス。
データはキーとバリューの組み合わせになっている。
# 名前、メール、住所のデータが入ったハッシュの定義
# キー:name, email, address
# バリュー:Tanaka, hoge@co.ne.jp, Saitama
puts params[:name]
出力結果
Tanaka
ハッシュを使うメリットは、データの順番を意識しないで済むこと。
上のサンプルのように、 name を指定してデータを取り出すと、格納された順番に関係なく name に紐づく Tanaka というデータを取り出すことができる。
そのため「必要な処理をするためには〜番目のデータを取り出さなければいけない」といったように、順番を考慮する必要がありません。
また、ハッシュはキーとバリューの組み合わせでデータを扱うことができるので、名前やメールアドレス、住所など、色んな種類のデータを格納するときに便利。
ハッシュの定義方法としては以下のような書き方もある。
基本的には name: というようにシンボルを用いてキーを記述するが、"name" のように文字列でも記述できる・
puts params["name"]
ハッシュは以下のように途中で改行することもできる。
params = {
"name" => "Tanaka",
"address" => "Saitama"
}
puts params["name"]
ハッシュで使用される {} の部分は、 each でも使用されるので、混同しないように注意。
# ハッシュ
# each {} を使用して以下のようにも書ける
["satou", "tanaka", "yamada", "shimizu"].each {|name| puts "Hello!! #{name}." }
ハッシュは、定義した後にもデータを書き換えたり、追加したりできる。
# データの書き換え
params[:name] = "Saito"
# データの追加
params[:age] = 33
puts params[:name]
puts params[:age]
# 存在しないキーを指定するとnilになる
params[:hobby]
出力結果
Saito
33
配列と同様、ハッシュにも繰り返し処理を行うことができる。
puts "キー:#{key}"
end
また、each メソッドのブロック引数の数を1つにすると、ハッシュの中にキーとバリューが格納される。
# 配列を出力
puts key_value
end
ハッシュは、ハッシュ同士で比較を行うことができる。
キーとバリューが等しい場合は true を返し、そうでない場合は false を返す。
# trueが返る
puts params1 == params2
ハッシュの要素は、キーを指定して削除することができる。
params.delete(:name)
シンボル
: の後に任意の名前をつけた文字列のような見た目のオブジェクト。
・見た目が文字列っぽいので読みやすい
・内部的には整数なので処理が速い
・メモリの使用効率がいい
・破壊的メソッドが使えないので値が勝手に変更される心配がない
そのため、2つの値が同じかどうかを比べる場合は、文字列よりも高速で処理を行うことができます。
"name" == "name"
:name == :name
ハッシュのキーのみを取り出すときは以下のように記述する。
params.each_key do |key|
puts "キー:#{key}"
end
出力結果
キー:name
キー:email
キー:address
ハッシュのバリューのみを取り出すときは以下のように記述する。
end