这是我的 Rails 课程
class SkinnyEmployee
include ActiveModel::Validations
attr_accessor :uid, :name
validates :uid, :presence => true
def initialize(id, name)
@uid = id
@name = name
end
def ==(other)
puts "Calling =="
raise ArgumentError.new("other is nil or bad in "+self.to_s) if other.nil? or !other.instance_of?(SkinnyEmployee)
return (self.class == other.class && self.uid == other.uid)
end
alias :eql? :==
end
我有一个 SkinnyEmployee 对象的哈希值。例如,
skinny_hash = {SkinnyEmployee.new("123", "xyz") => 1, SkinnyEmployee.new("456", "abc") => 2}
我有另一个要查找的 SkinnyEmployee 对象。例如,
entry = SkinnyEmployee.new("456", "abc")
当我做
skinny_hash.keys.index(entry)
正如预期的那样,我得到 1。但是当我这样做时
skinny_hash.has_key?(entry)
我弄错了。
这是为什么?没有has_key吗?也使用 == 或 eql? 查找哈希中是否存在密钥?
非常感谢您的帮助!