如何创建它以便每次创建类User
的新实例时,实例将被命名为user#
(#=一个数字),以便每个用户都有不同的号。
所以它做了这样的事情:
user1 = User.new("user", "password")
user2 = User.new("other_user", "password")
user3 = User.new("other_user", "password")
...
但如果user1
已经存在,我希望它能够在创建新用户时将其命名为user2
,而不是重新创建user1
,依此类推。
答案 0 :(得分:3)
以您的思考方式定义变量会使以后很难读取变量。想象您想如何再次读取值?您需要自己跟踪存在多少变量。在这种情况下,无需使用元编程。
避免此问题的数据结构是Array,它允许您存储元素并通过它们在数组中的位置再次读取它们:
users = []
users << User.new("user", "password")
users << User.new("other_user", "password")
users << User.new("other_user", "password")
users
#=> returns all users in an array
users.size
#=> returns the number of users in the array
users[0]
#=> returns the first User
users[n]
#=> returns the n User in this array
在我看来,OP想要(或至少不关心)重复。但是,如果你想避免重复,你可以在添加这样的新元素之前检查重复项:
user = User.new("other_user", "password")
users << user unless users.include?(user)
或者您可以通过调用users.uniq
删除重复项。