Ruby Sliverでよく出題される。「同じ動作をするメソッドを選べ」的な問題をまとめておきます。
find_allメソッドは、条件に合う要素を探して集めます。ブロック引数itemに要素を入れながらブロックを繰り返し、ブロックの戻り値が真になったときの要素を集め、配列にして返します。 selectメソッドは、find_allの別名です。
|
|
collectメソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返します。ブロック引数itemには各要素が入ります。 mapメソッドはcollectメソッドの別名です。
|
|
findメソッドは、要素を探して取り出します。ブロック引数itemに要素を入れながらブロックを繰り返し、ブロックが真が返したときは繰り返しを中断してその要素を返します。ブロックの戻り値がすべて偽であればnilを返します。 detectメソッドは、findの別名です。
|
|
delete_ifメソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値が真になった要素を削除します。レシーバ自身を変更するメソッドです。ブロック引数itemには各要素が入ります。 reject!メソッドとは異なり、戻り値は常にレシーバ自身です。
reject!メソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値が真になった要素を削除します。レシーバ自身を変更するメソッドです。ブロック引数itemには各要素が入ります。 delete_ifと同じことをするメソッドですが、戻り値だけ異なります。削除が行われたときはレシーバ自身を返し、変化がなかったときはnilを返します。
|
|