Ответ 1
Используйте Enumerable#flat_map
b = [0, 3, 6]
a = b.flat_map { |x| [x, x+1, x+2] }
a # => [0, 1, 2, 3, 4, 5, 6, 7, 8]
Есть ли способ сделать:
a = b.map{ |e| #return multiple elements to be added to a }
Вместо того, чтобы возвращать один объект для каждой итерации, добавляемой в a
, можно вернуть несколько объектов.
В настоящее время я достигаю этого:
a = []
b.map{ |e| a.concat([x,y,z]) }
Есть ли способ сделать это в одной строке без объявления a = []
спереди?
Используйте Enumerable#flat_map
b = [0, 3, 6]
a = b.flat_map { |x| [x, x+1, x+2] }
a # => [0, 1, 2, 3, 4, 5, 6, 7, 8]
Использовать Enumerable # flat_map
Что, вероятно, не сильно отличается от:
p [1, 2, 3].map{|num| [1, 2, 3]}.flatten
--output:-
[1, 2, 3, 1, 2, 3, 1, 2, 3]