これが私の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 も使用しますか? キーがハッシュに存在するかどうかを調べるには?
助けてくれてありがとう!