I get a "key not found" error even though the key is clearly in there.
Here's a stripped down version of the code that produces the error:
# Define my custom type
type Test
act::Array{Int64}
obs::Array{Int64}
end
# Have to define an equality operator for the new type
import Base
Base.(:(==))(a::Test, b::Test) = (
function (a::Test, b::Test)
(a.act == b.act) && (a.obs == b.obs)
end ) (a,b)
# Make a Test, use it as a key in a dictionary,
# then make a new test that is known to be in the dict
myTest = Test([1], [1])
test2ID = Dict([myTest=>1])
myTestCopy = deepcopy(myTest)
# These work
test2ID[myTest] # 1
myTest in keys(test2ID) # true
myTestCopy in collect(keys(test2ID)) # true
myTest == myTestCopy # true
# These fail
test2ID[myTestCopy] # error: key not found
myTestCopy in keys(test2ID) # false
So if I index with the original object that I created the dict from, then
it works. If I have created a new and identical object, I get "key not
found" when I index by the new object AND it doesn't appear in the keys()
of the dictionary. Puzzlingly, if the keys() are collect()ed then it is
indeed found.
I suspect this is a bug, but wanted to check with the community before
opening an issue on github. Am I doing something wrong?
Thanks in advance.