- Home ›
- Ruby入門 ›
- 配列(Array)クラス ›
- HERE
要素毎に判定を行い該当する要素を取り除く
広告
配列に格納されている各要素に対してブロック内で処理を実行し結果が「true」の要素を取り除く方法を確認します。Arrayクラスで用意されている「delete_if」メソッドを使います。
Arrayオブジェクト.delete_if {|x| ... }
「delete_if」メソッドはその後に記述されたブロック内で要素毎に実行する文を記述します。各要素の値はブロック内の「|x|」の箇所に書かれた変数で参照できます。
具体的には次のように記述します。
ary = [1, 2, 3, 5, 4, 3] ary.delete_if {|x| x % 2 == 0}
この場合、各要素の値を取り出して2で割り切れた場合取り除かれます。結果として元の配列から該当の要素を取り除いた配列となります。
[1, 3, 5, 4, 3]
またまったく同じ動作をするメソッドとして「reject」メソッドも用意されています。
Arrayオブジェクト.reject! {|x| ... }
使い方は「delete_if」メソッドと同じです。
サンプルプログラム
実際に試してみます。
#! ruby -Ks ary = [1, 2, 3, 5, 4, 3] p ary ary.delete_if {|x| x % 2 == 0} p ary
実行結果は次のようになります。
( Written by Tatsuo Ikura )