読者です 読者をやめる 読者になる 読者になる

Bonkura - Kenny

SIerで働く文系SEの記録

【たのしいRuby_15】ハッシュクラス

Ruby

たのしいRubyの第15章を学んだ。

たのしいRuby 第4版

たのしいRuby 第4版

ハッシュオブジェクトは配列オブジェクトと似て非なるもの。配列は「インデックス」を用いて各要素にアクセスしたが、ハッシュでは 「キー」を用いて要素にアクセスする。

ハッシュの作り方

  • {キー => 値,キー => 値}
  • Hash.new("hoge")

hogeには「登録されていないキーを指定した時に返す値」を入れる。

値の登録と取り出しメソッド

h.store("R","Ruby")
p h.fetch("R") => "Ruby"

キーや値をまとめて取り出す

ハッシュのデフォルト値

  • h = Hash.new(1)
  • ハッシュのデフォルト値を生成するブロックを指定
h = Hash.new do |hash,keys|
hash[key] = key.upcase
end

その他メソッド

h = {"a" => "b", "c" => "d" }

# キー・値の存在チェック
p h.key?("a") #=> true
p h.value?("b") #=> true

# 登録されているキーの数
p h.length #=> 2

# 何もキーが登録されていないかどうか?
p h.empty? #=> false
h2 = Hash.new
p h2.empty? #=> true

# キーの削除。(ブロックを渡すとキーが存在しなかった場合にブロックを実行した結果を返す。)
h2 = {"R" => "Ruby","P" => "Perl"}
p h2.delete("Y") {|key| "no #{key}" }

# 条件を与えてその条件に当てはまるものだけ削除。
p h2.delete_if{|key,value| key == "P" } #=> {"R" => "Ruby"}

# ハッシュへの要素追加
h2.store("J","Java")
p h2

# ハッシュのクリア
h2.clear
p h2