有办法吗?
a = b.map{ |e| #return multiple elements to be added to a }
除了将每个迭代的单个对象返回到a
之外,可以返回多个对象。
我目前正在实现这一目标:
a = []
b.map{ |e| a.concat([x,y,z]) }
有没有办法在单行中进行此操作而无需事先声明a = []
?
答案 0 :(得分:23)
b = [0, 3, 6]
a = b.flat_map { |x| [x, x+1, x+2] }
a # => [0, 1, 2, 3, 4, 5, 6, 7, 8]
答案 1 :(得分:0)
使用Enumerable#flat_map
可能与以下内容没什么不同:
p [1, 2, 3].map{|num| [1, 2, 3]}.flatten
--output:-
[1, 2, 3, 1, 2, 3, 1, 2, 3]