Rubyにはselect
、配列を受け取り、ブロックで指定されたテストに合格したすべての要素で構成されるサブ配列を返すメソッドがあります。
myarray.select{|e| mytest(e)} #=> subarray of elements passing mytest
これらの要素ではなく、それらのインデックスを取得する簡単な方法があるかどうか疑問に思っています。私はあなたがこれを行うことができることを理解しています:
indices = []
myarray.each_with_index{|e,i| indices << i if mytest(e)}
しかし、私はワンライナーを探しています。存在しますか?Arrayクラスに拡張機能を記述しないでください。そうすれば、ワンライナーを取得できます。