NamedTupleTools is a small package that makes doing a few things with `NamedTuples`

a bit easier.

*(Julia v1.0)*

using NamedTupleTools

julia> namedtuple(:a, :b, :c)(1, 2.0, “three”)

(a = 1, b = 2.0, c = “three”)

#=

namedtuple( name1, name2, … )

namedtuple( (name1, name2, …) )

where the `names`

are all `Symbols`

or all `Strings`

Generate a NamedTuple prototype by specifying or obtaining the fieldnames.

The prototype is applied to fieldvalues, giving a completed NamedTuple.

=#

julia> ntproto = namedtuple( :a, :b, :c )

NamedTuple{(:a, :b, :c),T} where T<:Tuple

julia> nt123 = ntproto(1, 2, 3)

(a = 1, b = 2, c = 3)

julia> ntAb3 = ntproto(“A”, “b”, 3)

(a = “A”, b = “b”, c = 3)

julia> isprototype(ntproto)

true

julia> isprototype(nt123)

false

julia> delete!(nt123, :a) === (b = 2, c = 3)

true

julia> delete!(nt123, :a, :c) === delete!(nt123, (:a, :c)) === (b = 2,)

true

julia> delete!(ntproto, :b) === namedtuple(:a, :c)

true

julia> ntproto1 = namedtuple(:a, :b);

julia> ntproto2 = namedtuple(:b, :c);

julia> merge(ntproto1,ntproto2)

NamedTuple{(:a, :b, :c),T} where T<:Tuple