Я пытаюсь определить собственный метод равенства для нового типа, который я построил. Это MWE понимает, что я пытаюсь сделать.
mutable struct a
first_num::Int
second_num::Int
end
import Base.==
import Base.hash
function hash(obj::a, h=33141651)
return hash((obj.first_num, obj.second_num), h)
end
function ==(obj1::a, obj2::a)
if hash(obj1) == hash(obj2)
return true
else
return false
end
end
a1 = a(2,3)
a2 = a(2,3)
a1 == a2
Я тогда получаю сообщение об ошибке типа ERROR: TypeError: ==: in typeassert, expected UInt64, got Int64
h становится Int64?
Кроме того, если хеширование набора атрибутов просто не правильный способ сделать это, дайте мне знать.
Редактировать: На самом деле, я запустил это, и я получаю MethodError: no method matching hash(::Tuple{Int64,Int64}, ::Int64)
. h
повышен до Int64?