【发布时间】:2015-07-30 12:32:00
【问题描述】:
我有一个User 类如下:
class User
attr_reader :username, :password
def inintialize(username, password)
@username = username
@password = password
end
end
我想将其中许多 User 类存储在一个数组中,如下所示:
users = []
def initialize_users
user = User.new("user0", "password0")
users.push(user)
user = User.new("user1", "password1")
users.push(user)
end
现在我想实现一个搜索功能,我可以通过用户名或密码进行搜索。我知道我可以像这样遍历比较每个字段的类:
def search(username)
users.each do |user|
if user.username == username then
puts "Found"
break
end
end
end
但是有没有其他方法可以在没有迭代的情况下做到这一点,或者这只是最简单/最干净的方法?
我在想也许有办法做这样的事情:
users["username_to_find"]
=> true
虽然我不确定如何实现它。我相信我必须重写 User 类才能拥有一个内置列表,但从那里我迷路了。我想即使我确实实现了这个功能,仍然需要进行迭代。
我还想从该符号中访问该用户数据,例如
users["username_to_find"].password
=> "password111"
有人有什么想法吗?
PS:User 类被简化为相关代码,它实际上包含更多特定于每个用户的数据成员,例如套接字,以及用于将数据发送到特定用户套接字的方法。
【问题讨论】:
-
欢迎来到 Stack Overflow。创建标题时,请不要随意将“ruby”或您选择作为标签的类似词添加到句子的开头或结尾。改用正常的句子。 Stack Overflow 使用我们在搜索时定义的标签,并将它们提供给搜索引擎。如果你能将它们加入到句子的正常流程中,那很酷,但不要人为地添加它们。