Utilities

DynamicStructs defines a few functions to simplify working with dynamic properties, as well as the more general case where propertynames(x) != fieldnames(typeof(x)).

Base.propertynamesFunction
Base.propertynames(x, ::Type{NoFields}, private=false)

Excludes field names.

source
Base.propertynames(x, ::Type{OnlyFields}, private=false)

Includes only field names.

source

Examples

julia> using DynamicStructs
julia> @dynamic struct Spaceship name::String end
julia> ship = Spaceship("Blip-A"; pressure=28.0)Main.Spaceship("Blip-A"; pressure = 28.0)
julia> propertynames(ship, OnlyFields)(:name,)
julia> propertynames(ship, NoFields)(:pressure,)
julia> propertyvalues(ship)("Blip-A", 28.0)
julia> propertyvalues(ship, NoFields)(28.0,)
julia> propertypairs(ship)(:name => "Blip-A", :pressure => 28.0)
julia> propertypairs(ship, OnlyFields)(:name => "Blip-A",)
julia> ship == Spaceship(propertyvalues(ship, OnlyFields)...; propertypairs(ship, NoFields)...)true