如何动态更改变量名?
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]
我有以下循环:
(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]