|
1 | 1 | abstract type AbstractAlignedMapping{T <: Tuple, K, V} <: AbstractDict{K, V} end |
2 | 2 |
|
3 | | -struct AlignedMapping{T <: Tuple, K, R, D} <: AbstractAlignedMapping{ |
4 | | - T, |
5 | | - K, |
6 | | - Union{AbstractArray{<:Number}, AbstractArray{Union{Missing, T}} where T <: Number, D == true ? DataFrame : Union{}}, |
7 | | -} |
| 3 | +struct AlignedMapping{T <: Tuple, K, R, D, V} <: AbstractAlignedMapping{T, K, V} |
8 | 4 | ref::R # any type as long as it supports size() |
9 | | - d::Dict{ |
10 | | - K, |
11 | | - Union{ |
12 | | - AbstractArray{<:Number}, |
13 | | - AbstractArray{Union{Missing, T}} where T <: Number, |
14 | | - D == true ? DataFrame : Union{}, |
15 | | - }, |
16 | | - } |
| 5 | + d::Dict{K, V} |
17 | 6 |
|
18 | 7 | function AlignedMapping{T, K, D}(r, d::AbstractDict{K}) where {T <: Tuple, K, D} |
| 8 | + @assert isa(D, Bool) |
19 | 9 | for (k, v) ∈ d |
20 | 10 | checkdim(T, v, r, k) |
21 | 11 | end |
22 | | - return new{T, K, typeof(r), D}(r, d) |
| 12 | + |
| 13 | + V = Union{AbstractArray{<:Number}, AbstractArray{Union{Missing, T}} where T <: Number, D ? DataFrame : Union{}} |
| 14 | + return new{T, K, typeof(r), D, V}(r, d) |
23 | 15 | end |
24 | 16 | end |
25 | 17 |
|
@@ -266,5 +258,5 @@ function Base.view(parentview::AlignedMappingView{T}, indices...) where {T <: Tu |
266 | 258 | return AlignedMappingView(parent(parentview), Base.reindex(parentindices(parentview), indices)) |
267 | 259 | end |
268 | 260 |
|
269 | | -const StrAlignedMapping{T <: Tuple, R, D} = AlignedMapping{T, String, R, D} |
| 261 | +const StrAlignedMapping{T <: Tuple, R, D, V} = AlignedMapping{T, String, R, D, V} |
270 | 262 | const StrAlignedMappingView{T <: Tuple} = AlignedMappingView{T, String} |
0 commit comments