ハッシュからキーと値を取り除く

広告

Hashクラスのオブジェクトに含まれるキーと値を取り除く方法を確認します。Hashクラスで用意されている「delete」メソッドを使います。

Hashオブジェクト.delete(key)

引数;
  key  削除したい値に対応するキー
戻り値:
  取り除かれた値。キーが存在しなかった場合はnil

引数に指定したキーに対応する値をハッシュ自身から取り除きます。

例えば次のように記述します。

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}
h.delete("itou")

この場合、キーが「itou」である「76」と言う値が(キーと一緒に)ハッシュから取り除かれます。

また指定したキーがハッシュに存在しなかった場合の処理を記述するブロック付きのメソッドも利用できます。

Hashオブジェクト.delete(key) {|key| ... }

引数;
  key  削除したい値に対応するキー
戻り値:
  取り除かれた値。キーが存在しなかった場合はブロック内を実行した結果

ハッシュからキーに対応する値を取り除く点は同じですが、キーがハッシュ内に存在しなかった場合にはブロック内を実行した結果を返します。例えば次のように記述します。

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}

h.delete("kudou"){|key|
  print("#{key} は存在しません¥n")
}

この場合キー「kudou」はハッシュ内に存在しませんのでブロック内が実行されます。

サンプルプログラム

では簡単なサンプルで試してみます。

LibraryHash5.rb

#! ruby -Ks

h = {"suzuki" => 87, "itou" => 76, "yamada" => 69}
p h

print("キー:itouを削除します¥n")
h.delete("itou")
p h

print("キー:kudouを削除します¥n")
h.delete("kudou"){|key|
  print("#{key} は存在しません¥n")
}
p h

実行結果は次のようになります。

ハッシュからキーと値を取り除く

( Written by Tatsuo Ikura )