我有以下循环:
(1..1000).each do |i|
user1 = User.create(:name => "Bob#{i}")
...
end
如何让变量名称user1
动态变化,使用i
获取:
user1 == Bob1
user2 == Bob2
user3 == Bob3
答案 0 :(得分:2)
您不能,但您可以使用Hash
获得类似的结果:
(1..1000).each_with_object({}) do |i, users|
users["user#{i}"] = User.create(:name => "Bob#{i}")
end
如果您需要访问块外的哈希,只需将其分配给变量:
users = (1..1000).each_with_object({}) { |i, users| users["user#{i}"] = User.create(:name => "Bob#{i}") }
并访问特定用户(例如user1
),如下所示:
users["user1"]
或者您只能使用i
作为关键字:
users = (1..1000).each_with_object({}) { |i, users| users[i] = User.create(:name => "Bob#{i}") }
并访问特定用户(例如user1
),如下所示:
users[1]