Dear all,
while experimenting with the Set collection I am incurring in a very
strange behavior when I use a custom type. More precisely:
julia> type Test
x::Int
end
julia> import Base.==
julia> ==(a::Test, b::Test) = a.x == b.x
== (generic function with 110 methods)
julia> a = Set{Test}()
Set{Test}()
julia> push!(a, Test(1))
Set([Test(1)])
julia> push!(a, Test(1))
Set([Test(1),Test(1)])
This should not happen, since Test(1)==Test(1). Moreover, I get the
following
julia> Test(1) ∈ a
true
julia> haskey(a.dict, Test(1))
false
which is quite strange, since the definition of the ∈ function is
in(x, s::Set) = haskey(s.dict, x)
Finally, I remark that the following works correctly
julia> x = Test(1)
Test(1)
julia> a = Set{Test}()
Set{Test}()
julia> push!(a,x)
Set([Test(1)])
julia> push!(a,x)
Set([Test(1)])
Someone has any idea of what is happening here? I'm on v0.4.5, but the same
behavior is reproducible on v0.5.
Thanks,
Dario