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



我目前正在做:

@users.each do |user|

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

有没有办法做到:

[@users, @users1, @users2].each do |user|

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

谢谢

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

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

使用扁平可能很诱人,但您应该小心。 如果任何数组的任何元素本身都是数组,则简单的无参数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!!!

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

puts [users,users1,users2].flatten(1).inspect
# Will print [1, 2, [3, 4], [5, 6], 7, 8]
# Just as planned.
[@users,@users1,@users2].flatten.each do |user|

各种技术:

# Concatenate
(@users+@users1+@users2).each{ ... }
# Splat (Ruby 1.9 only)
[*@users,*@users1,*@users2].each{ ... }
# Interleave them
@users.zip( @users1, @users2 ).each{ |u,u1,u2| ... }

相关内容

  • 没有找到相关文章

最新更新