ハッシュはユニークなキーが付いたオブジェクトを入れるコンテナ(容器)で、次のように{}
(波括弧)を用いて変数に代入する。
変数 = {キー1 => オブジェクト1, キー2 => オブジェクト2, …}
その後、オブジェクトを参照したり代入するときは、次のようにキーを指定する。
変数[キー]
fruits = {"banana" => "バナナ", "apple" => "りんご", "orange" => "オレンジ"}
fruits["tomato"] = "トマト"
puts fruits["apple"] # りんご
上の例ではキーが文字列になっているが、シンボルにすることもできる。シンボルは名前・ラベルのようなもの。先頭に:
(コロン)を付けた文字列だが、"
は省略できる。
:"シンボル名"
:シンボル名
キーをシンボルにしたハッシュの場合、シンボル名の末尾に:
を付けた次の書式も使える。
変数 = {シンボル名: オブジェクト, シンボル名: オブジェクト, …}
# 参照はこう
変数[:シンボル名]
# どちらでもいい。
fruits = {:banana => "バナナ", :apple => "りんご", :orange => "オレンジ"}
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
puts fruits[:apple] # りんご
キーをまとめて配列として取り出すのはkeys
メソッド。
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
keys = fruits.keys
puts keys
出力はこうなる。
banana
apple
orange
オブジェクトをまとめて配列として取り出すのはvalues
メソッド。
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
values = fruits.values
puts values
出力はこうなる。
バナナ
りんご
オレンジ
ハッシュにキーが存在するか確認するには、key?
メソッド。has_key?
、include?
、member?
メソッドも同じ。
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
puts fruits.key?(:tomato) # false
ハッシュにオブジェクトが存在するか確認するには、value?
メソッド。has_value?
メソッドも同じ。
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
puts fruits.value?("りんご") # true
ハッシュに含まれている要素の数を調べるには、size
メソッド。length
メソッドも同じ。
fruits = {banana: "バナナ", apple: "りんご", orange: "オレンジ"}
puts fruits.size # 3
ハッシュに何も含まれていないか確認するには、empty?
メソッド。
fruits = {} # 空のハッシュ作成
puts fruits.size # 0
puts fruits.empty? # true
ハッシュに含まれる要素(キーとそのオブジェクト)をキーを指定して削除するには、delete
メソッド。
fruits = {"banana" => "バナナ", "apple" => "りんご", "orange" => "オレンジ"}
fruits.delete("banana")
puts fruits.key?("banana") # false