Efficient structure of Unitful arrays

The function signature will get long, but there’s no reason you can’t scale this up to multiple type parameters for arrays of multiple types.

struct MyData7{T, T2, T3}
    arr1::Array{T, 3}
    arr2::Array{T2, 3}
    arr3::Array{T3, 3}

    function MyData7(a::AbstractArray{T, 3}, b::AbstractArray{T2, 3}, c::AbstractArray{T3, 3}) where {
                     T <: Quantity{<:Float64}, T2 <: Quantity{<:Int64}, T3 <: Quantity{<:Float64} }
        new{T, T2, T3}(a, b, c)
    end
end

# works 
# julia> MyData7(ones(Float64, (5, 5, 5))u"K", ones(Int64, (5, 5, 5))u"K", ones(Float64, (5, 5, 5))u"K")

# correctly errors 
# julia> MyData7(ones(Int64, (5, 5, 5))u"K", ones(Int64, (5, 5, 5))u"K", ones(Float64, (5, 5, 5))u"K")
4 Likes