RedefStructs.jl
Documentation for RedefStructs.jl.
This package provides the macros @redef, @redef_print, and @kwredef which allow to create structures which are redefinable.
Examples
Using @redef:
julia> using RedefStructs
julia> @redef struct S
s::String
end
julia> S("Hello").s
"Hello"
julia> @redef mutable struct S
n::Int
end
julia> S(42).n
42Using @redef_print:
julia> using RedefStructs
julia> @redef_print struct S
s::String
end
julia> S("Hello").s
"Hello"
julia> @redef_print mutable struct S
n::Int
end
julia> S(42).n
42Using @redef:
julia> using RedefStructs
julia> @kwredef struct S
s::String = "<empty>"
end
julia> S("Hello").s
"Hello"
julia> @kwredef mutable struct S
a::Int = 0
b::Int
end
julia> S(b=42).a
0Library
RedefStructs.replace!RedefStructs.struct_def_nameRedefStructs.@kwredefRedefStructs.@redefRedefStructs.@redef_print
Public
RedefStructs.@kwredef — Macro@kwredef [mutable] struct S [<: A]
...
endDefine a structure in a manner that allows redefinitions, using Base.@kwdef.
Behind the scenes, this creates a "secret" structure with gensym and assigns S to its name.
See also @redef and Base.@kwdef.
Examples
julia> using RedefStructs
julia> @kwredef struct S
s::String = "<empty>"
end
julia> S("Hello").s
"Hello"
julia> @kwredef mutable struct S
a::Int = 0
b::Int
end
julia> S(b=42).a
0RedefStructs.@redef — Macro@redef [mutable] struct S [<: A]
...
endDefine a structure in a manner that allows redefinitions.
Behind the scenes, this creates a "secret" structure with gensym and assigns S to its name.
See also @redef_print.
Examples
julia> using RedefStructs
julia> @redef struct S
s::String
end
julia> S("Hello").s
"Hello"
julia> @redef mutable struct S
n::Int
end
julia> S(42).n
42RedefStructs.@redef_print — Macro@redef [mutable] struct S [<: A]
...
endDefine a structure in a manner that allows redefinitions.
Behind the scenes, this creates a "secret" structure with gensym and defines a specialized method of Base.show_datatype which shows S.
See also @redef.
Examples
julia> using RedefStructs
julia> @redef_print struct S
s::String
end
julia> S("Hello").s
"Hello"
julia> @redef_print mutable struct S
n::Int
end
julia> S(42).n
42Private
RedefStructs.replace! — Methodreplace!(code::Expr, old::Symbol, new::Symbol)Replaces every appearance of old in code with new. Modifies code and returns it.
RedefStructs.struct_def_name — Methodstruct_def_name(struct_def)Returns the name of the struct being defined in a struct ... end block.