Created
May 20, 2025 12:49
-
-
Save j-fu/fcb3a690e37cd213c873404d383dfc19 to your computer and use it in GitHub Desktop.
JDL2 MWE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using JLD2 | |
abstract type AbstractStuffType end | |
struct Stuff1 <: AbstractStuffType end | |
struct Stuff2 <: AbstractStuffType end | |
struct Stuff3 <: AbstractStuffType end | |
const UnionStuff=Union{Type{Stuff1}, Type{Stuff2}, Type{Stuff3}} | |
function runtest() | |
u0=[Stuff1, Stuff2, Stuff3] | |
save("u0.jld2", "u0", u0) | |
u1=load("u0.jld2")["u0"] | |
@show u0==u1 | |
v0=Type{Stuff1}[Stuff1, Stuff1, Stuff1] | |
save("v0.jld2", "v0", v0) | |
v1=load("v0.jld2")["v0"] | |
@show v0==v1 | |
w0=UnionStuff[Stuff1, Stuff2, Stuff3] | |
save("w0.jld2", "w0", w0) | |
w1=load("w0.jld2")["w0"] | |
@show w0==w1 | |
end | |
runtest() | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using JLD2 | |
struct VectorOfConstants{T, Tl} <: AbstractVector{T} | |
val::T | |
len::Tl | |
end | |
Base.IndexStyle(::Type{<:VectorOfConstants}) = IndexLinear() | |
Base.length(v::VectorOfConstants) = v.len | |
Base.size(v::VectorOfConstants) = (v.len,) | |
function Base.getindex(v::VectorOfConstants, i) | |
if i > v.len | |
throw(BoundsError(v, i)) | |
end | |
return v.val | |
end | |
Base.iterate(v::VectorOfConstants) = (v.val, 1) | |
Base.iterate(v::VectorOfConstants, state) = state >= v.len ? nothing : (v.val, state + 1) | |
Base.unique(v::VectorOfConstants) = [v.val] | |
abstract type AbstractStuffType end | |
struct Stuff1 <: AbstractStuffType end | |
struct Stuff2 <: AbstractStuffType end | |
struct Stuff3 <: AbstractStuffType end | |
const UnionStuff=Union{Type{Stuff1}, Type{Stuff2}, Type{Stuff3}} | |
function runtest() | |
u0=VectorOfConstants(Stuff1, 3) | |
save("u0.jld2", "u0", u0) | |
u1=load("u0.jld2")["u0"] | |
@show u0==u1 | |
v0=VectorOfConstants{Type{Stuff1}, Int}(Stuff1, 3) | |
save("v0.jld2", "v0", v0) | |
v1=load("v0.jld2")["v0"] | |
@show v0==v1 | |
w0=VectorOfConstants{UnionStuff, Int}(Stuff1, 3) | |
save("w0.jld2", "w0", w0) | |
w1=load("w0.jld2")["w0"] | |
@show w0==w1 | |
end | |
runtest() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment