如何动态更改变量名?

How to dynamically alter variable names?

我有以下循环:

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

如何使用 i 让变量名 user1 动态变化以获得:

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

你不能,但你可以使用 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]