2014-02-02 3 views
0

Допустим, у меня есть массивИзвлечение нескольких записей из массива Ruby,

arry = ["a","b","c","d","e","f","g"] 

, и я хочу, чтобы получить четвертый, второй и седьмой элемент этого массива.

Предположим, что определена другая функция, которая является необходимыми значениями и передала мне массив массивов индексов, например [3, 1, 6]. В большинстве языков я мог бы написать этот

array[3,1,6] #=> ["d","b","g"] (or "dbg"?) 

или

array[3 1 6] #=> ["d","b","g"] 

Но это не будет работать в Ruby, конечно. Есть ли простой способ сделать это в Ruby? Чистейший я могу найти что-то вроде:

[3,1,6].map { |i| array[i] } 

Я действительно пытался найти дубликат на этот вопрос, так как это кажется так просто, но я просто не мог.

Это замечательно легко сделать на большинстве языков, поэтому я почти предполагаю, что я просто замечаю удивительно очевидное.

ответ

6
array.values_at(3,1,6) #=> ["d","b","g"] 
+0

Dang это. Знал, это было что-то простое. Не так просто, как просто быть функцией [], как я предполагал, но это именно то, что я искал. Благодаря! –

0

Если другая функция возвращает массив, то вы должны выровнять его, прежде чем передать его в качестве параметров values_at. Как это

arry = ["a","b","c","d","e","f","g"] 

def indices 
    [1,3,6] 
end 

puts arry.values_at(*indices) 

выход

b 
d 
g 
Смежные вопросы