我有以下循环:
(1..1000).each do |i|
user1 = User.create(:name => "Bob#{i}")
...
end
如何让变量名user1
使用 i
动态变化得到:
user1 == Bob1
user2 == Bob2
user3 == Bob3
最佳答案
你不能,但你可以使用哈希
来获得类似的结果:
(1..1000).each_with_object({}) do |i, users|
users["user#{i}"] = User.create(:name => "Bob#{i}")
end
如果需要访问 block 外的哈希值,只需将其分配给变量即可:
users = (1..1000).each_with_object({}) { |i, users| users["user#{i}"] = User.create(:name => "Bob#{i}") }
并访问特定用户(例如user1
),如下所示:
users["user1"]
或者您可以仅使用 i
作为 key :
users = (1..1000).each_with_object({}) { |i, users| users[i] = User.create(:name => "Bob#{i}") }
并访问特定用户(例如user1
),如下所示:
users[1]
关于ruby - 如何动态更改变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771684/