如何动态更改变量名称?

时间:2017-06-27 03:06:33

标签: ruby local-variables

我有以下循环:

(1..1000).each do |i|
  user1 = User.create(:name => "Bob#{i}")
  ...
end

如何让变量名称user1动态变化,使用i获取:

user1 == Bob1
user2 == Bob2
user3 == Bob3

1 个答案:

答案 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]