我现在正在做:

@users.each do |user|

假设我有@users,@users1,@users2
有办法吗?
[@users, @users1, @users2].each do |user|

让每个循环遍历所有对象?
谢谢

最佳答案

可以连接数组并迭代结果:

(@users + @users1 + @users2).each do |user|
  ...
end

使用flatten可能很有诱惑力,但你应该小心。如果任何数组的任何元素都是数组本身,那么一个简单的no argumentsflatten调用的行为与您预期的不同:
users, users1, users2 = [1,2],  [ [3,4], [5,6] ], [ 7,8]
puts [users,users1,users2].flatten.inspect
# Will print [1, 2, 3, 4, 5, 6, 7, 8]
# Two small arrays are smashed!!!

然而,正如其中一条注释中的jleedev所示,ruby中的flatten函数可能接受一个整数参数,该参数定义数组将被破坏到的最大级别,因此:
puts [users,users1,users2].flatten(1).inspect
# Will print [1, 2, [3, 4], [5, 6], 7, 8]
# Just as planned.

09-28 11:44