@ users.each do | user | ---有没有办法为多个对象执行此操作

AnA*_*ice 4 ruby ruby-on-rails ruby-on-rails-3

我现在正在做:

@users.each do |user|
Run Code Online (Sandbox Code Playgroud)

鉴于我有@ usersrs,@ users1,@ users2

有办法吗?

[@users, @users1, @users2].each do |user|
Run Code Online (Sandbox Code Playgroud)

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

谢谢

P S*_*ved 10

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

(@users + @users1 + @users2).each do |user| 
  ...
end
Run Code Online (Sandbox Code Playgroud)

使用flatten可能很诱人,但你应该小心它.flatten如果任何数组的任何元素都是数组本身,那么简单的无参数调用就不会按预期的方式运行:

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!!!
Run Code Online (Sandbox Code Playgroud)

但是,正如jleedev在其中一条评论中所建议的那样,flattenRuby中的函数可能接受一个整数参数,该参数定义了数组将被粉碎的最大级别,因此:

puts [users,users1,users2].flatten(1).inspect
# Will print [1, 2, [3, 4], [5, 6], 7, 8]
# Just as planned.
Run Code Online (Sandbox Code Playgroud)