Ruby:选择一组元素通过测试的数组索引

Sea*_*sey 2 ruby arrays

Ruby有一个select方法,它接受一个数组并返回一个子数组,该子数组包含通过块中给出的测试的所有元素:

myarray.select{|e| mytest(e)}   #=> subarray of elements passing mytest
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个简单的方法来获取这些元素,而不是它们的索引.我知道你可以这样做:

indices = []
myarray.each_with_index{|e,i| indices << i if mytest(e)}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一个单线.有人存在吗?请不要写一个Array类的扩展,我知道你可以通过这种方式获得单行.

Xav*_*olt 6

另一个单线:

(0...myarray.length).select {|i| mytest(myarray[i])}
Run Code Online (Sandbox Code Playgroud)

干杯!