Mercurial > repos > public > sbplib_julia
comparison src/StaticDicts/StaticDicts.jl @ 726:103f61d09a8b feature/static_dict
More documentation
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Wed, 17 Mar 2021 20:21:36 +0100 |
| parents | e5b51c82f83b |
| children | 3e0b0b44868e |
comparison
equal
deleted
inserted
replaced
| 725:e5b51c82f83b | 726:103f61d09a8b |
|---|---|
| 11 The immutable nature means that `StaticDict`s can be compared with `==`, in | 11 The immutable nature means that `StaticDict`s can be compared with `==`, in |
| 12 constrast to regular `Dict`s or `ImmutableDict`s which can not. (See | 12 constrast to regular `Dict`s or `ImmutableDict`s which can not. (See |
| 13 https://github.com/JuliaLang/julia/issues/4648 for details) | 13 https://github.com/JuliaLang/julia/issues/4648 for details) |
| 14 | 14 |
| 15 Lookups are done by linear search. | 15 Lookups are done by linear search. |
| 16 | |
| 17 Duplicate keys are not allowed and an error will be thrown if they are passed | |
| 18 to the constructor. | |
| 16 """ | 19 """ |
| 17 struct StaticDict{K,V,N} <: AbstractDict{K,V} | 20 struct StaticDict{K,V,N} <: AbstractDict{K,V} |
| 18 pairs::NTuple{N,Pair{K,V}} | 21 pairs::NTuple{N,Pair{K,V}} |
| 19 | 22 |
| 20 # TBD: Why doesn't `pairs::NTuple{N,Pair{K,V}}` work? | 23 # TBD: Why doesn't `pairs::NTuple{N,Pair{K,V}}` work? |
| 48 Base.iterate(d::StaticDict, state) = iterate(d.pairs,state) | 51 Base.iterate(d::StaticDict, state) = iterate(d.pairs,state) |
| 49 | 52 |
| 50 Base.length(d::StaticDict) = length(d.pairs) | 53 Base.length(d::StaticDict) = length(d.pairs) |
| 51 | 54 |
| 52 | 55 |
| 53 # TODO documentation: duplicate keys not allowed atm. will error | 56 """ |
| 57 merge(d1::StaticDict, d2::StaticDict) | |
| 58 | |
| 59 Merge two `StaticDict`. Repeating keys is considered and error. This may | |
| 60 change in a future version. | |
| 61 """ | |
| 54 function Base.merge(d1::StaticDict, d2::StaticDict) | 62 function Base.merge(d1::StaticDict, d2::StaticDict) |
| 55 return StaticDict(d1.pairs..., d2.pairs...) | 63 return StaticDict(d1.pairs..., d2.pairs...) |
| 56 end | 64 end |
| 57 | 65 |
| 58 | 66 |
