5 days ago
This is a package I use to handle numerical-model parameters, thus the name. However, it should be useful otherwise too. It has two main features:
@with_kw which decorates a type definition to
allow default values and a keyword constructor:
julia> using Parameters julia> @with_kw type A a::Int = 6 b::Float64 = -1.1 c::UInt8 end julia> A(c=4) A a: 6 b: -1.1 c: 4 julia> A() ERROR: Field 'c' has no default, supply it with keyword. julia> A(c=4, a = 2) A a: 2 b: -1.1 c: 4
Unpacking is done with
@pack is similar):
type A a b c end @unpack a, c = A(4,5,6) # is equivalent to AA = A(4,5,6) a = AA.a c = AA.c
The features are:
*is the type name.
@unpack(work with any types).
The keyword-constructor and default-values functionality will probably make it into Julia (# 10146, #533 and #6122) although probably not with all the features present in this package. I suspect that this package should stay usable & useful even after this change lands in Julia. Note that keyword functions are currently slow in Julia, so these constructors should not be used in hot inner loops. However, the normal positional constructor is also provided and could be used in performance critical code.
NEWS.md keeps tabs on updates.
Documentation is here.