職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

キーと値毎に判定を行い該当するキーと値を取り除く

2022年03月31日 | Ruby3.0.1
キーと値毎に判定を行い該当するキーと値を取り除く


【開発環境】
OS:Win11(64ビット)
Ruby 3.0.1
VSCodeバージョン: 1.57.1

【「delete_if」メソッド】
Hashクラスのオブジェクトに含まれるキーと値に対してブロック内で処理を実行し結果が「true」の要素を取り除く方法として、「delete_if」メソッドがある。

・書式
Hashオブジェクト.delete_if {|key, value| ... }

戻り値:
自分自身のハッシュオブジェクト

「delete_if」メソッドはその後に記述されたブロック内でキーと値毎に実行する文を記述します。

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

h.delete_if {|key, value|
value < 80
}
ブロック内で値が80よりも小さいキーと値を削除します。
また、
同じことを行うメソッドとして「reject!」メソッドが用意されている。
・書式
Hashオブジェクト.reject! {|key, value| ... }

戻り値:
自分自身のハッシュオブジェクト。要素を削除しなかった場合はnil

・「reject!」メソッドは「delete_if」メソッドと同じ処理を行いますが、削除するキーと値が無かった場合に戻り値として「nil」を返します。

【複製されたハッシュオブジェクトからキーと値を取り除く】
また自分自身のハッシュオブジェクトからキーと値を取り除くのではなく、複製したハッシュオブジェクトからキーと値を取り除くメソッドも用意されている→「reject」メソッド

・書式
Hashオブジェクト.reject {|key, value| ... }

戻り値:
複製されキーと値が削除されたハッシュオブジェクト

「reject」メソッドはその後に記述されたブロック内でキーと値毎に実行する文を記述します。キーと値はブロック内の「|key, value|」の箇所に書かれた変数で参照できます。ブロック内の処理が真(true)となるキーと値を複製されたハッシュオブジェクトから削除します。

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

newHash = h.delete_if {|key, value|
value < 80
}

サンプルプログラム
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする