Can anyone explain why ImmutableDict works the way it does?
I can’t specify the type when declaring it:
# Produces MethodError.
weapons = ImmutableDict{String,Int32}("Light-Rifle" => 100, "Plasma-Pistol" => 50)
I can’t pass in an array of pairs:
weapon_pairs = Pair{String,Int32}[("Light-Rifle" => 100),("Plasma Pistol" => 50)]
# Produces MethodError.
weapons = ImmutableDict(weapon_pairs)
It’s considered an AbstractDict:
println(isa(weapons,AbstractDict)) # true
Why can’t I specify the KV types or pass in an array of pairs?
ImmutableDict has a limited and convoluted way to add elements:
julia> import Base: ImmutableDict
julia> weapons = ImmutableDict{String,Int32}("Light-Rifle", 100)
ImmutableDict{String, Int32} with 1 entry:
"Light-Rifle" => 100
julia> weapons = ImmutableDict{String,Int32}(weapons, "Plasma Pistol", 50)
ImmutableDict{String, Int32} with 2 entries:
"Plasma Pistol" => 50
"Light-Rifle" => 100
Probably there are very few users of this type (it isn’t even exported) that no one got around making its usage more comfortable
The funny part is that it’s in the documentation, so I decided to try it out for myself.
When you say hasn’t been exported, you mean, I can’t use it naturally, I have to import from Base before using, correct?
I don’t think ImmutableDict is intended to be used outside of Base. Where did you find out about it?
(I use it outside of Base
well, I reimplemented it to not do type piracy)