Skip to content

Commit 98275a8

Browse files
authored
Merge pull request #59 from schmrlng/missing_nothing
Add OffsetArray/OffsetVector constructors for missing and nothing initialization
2 parents a415836 + d12a10e commit 98275a8

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/OffsetArrays.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,17 @@ OffsetArray(A::AbstractArray{T,N}, offsets::NTuple{N,Int}) where {T,N} =
1717
OffsetArray(A::AbstractArray{T,N}, offsets::Vararg{Int,N}) where {T,N} =
1818
OffsetArray(A, offsets)
1919

20-
OffsetArray{T,N}(::UndefInitializer, inds::Indices{N}) where {T,N} =
21-
OffsetArray{T,N,Array{T,N}}(Array{T,N}(undef, map(indexlength, inds)), map(indexoffset, inds))
22-
OffsetArray{T}(::UndefInitializer, inds::Indices{N}) where {T,N} = OffsetArray{T,N}(undef, inds)
23-
OffsetArray{T,N}(::UndefInitializer, inds::Vararg{AbstractUnitRange,N}) where {T,N} = OffsetArray{T,N}(undef, inds)
24-
OffsetArray{T}(::UndefInitializer, inds::Vararg{AbstractUnitRange,N}) where {T,N} = OffsetArray{T,N}(undef, inds)
20+
const ArrayInitializer = Union{UndefInitializer, Missing, Nothing}
21+
OffsetArray{T,N}(init::ArrayInitializer, inds::Indices{N}) where {T,N} =
22+
OffsetArray{T,N,Array{T,N}}(Array{T,N}(init, map(indexlength, inds)), map(indexoffset, inds))
23+
OffsetArray{T}(init::ArrayInitializer, inds::Indices{N}) where {T,N} = OffsetArray{T,N}(init, inds)
24+
OffsetArray{T,N}(init::ArrayInitializer, inds::Vararg{AbstractUnitRange,N}) where {T,N} = OffsetArray{T,N}(init, inds)
25+
OffsetArray{T}(init::ArrayInitializer, inds::Vararg{AbstractUnitRange,N}) where {T,N} = OffsetArray{T,N}(init, inds)
2526
OffsetArray(A::AbstractArray{T,0}) where {T} = OffsetArray{T,0,typeof(A)}(A, ())
2627

2728
# OffsetVector constructors
2829
OffsetVector(A::AbstractVector, offset) = OffsetArray(A, offset)
29-
OffsetVector{T}(::UndefInitializer, inds::AbstractUnitRange) where {T} = OffsetArray{T}(undef, inds)
30+
OffsetVector{T}(init::ArrayInitializer, inds::AbstractUnitRange) where {T} = OffsetArray{T}(init, inds)
3031

3132
# deprecated constructors
3233
using Base: @deprecate

test/runtests.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ a = OffsetArray(a0)
2222
@test ndims(a) == 0
2323
@test a[] == 3
2424

25+
# missing and nothing constructors
26+
for (T, t) in ((Missing, missing), (Nothing, nothing))
27+
@test !isassigned(OffsetArray{Union{T,Vector{Int}}}(undef, -1:1, -1:1), -1, -1)
28+
@test OffsetArray{Union{T,Vector{Int}}}(t, -1:1, -1:1)[-1, -1] === t
29+
@test !isassigned(OffsetVector{Union{T,Vector{Int}}}(undef, -1:1), -1)
30+
@test OffsetVector{Union{T,Vector{Int}}}(t, -1:1)[-1] === t
31+
end
32+
2533
y = OffsetArray{Float64}(undef, -1:1, -7:7, -128:512, -5:5, -1:1, -3:3, -2:2, -1:1)
2634
@test axes(y) == (-1:1, -7:7, -128:512, -5:5, -1:1, -3:3, -2:2, -1:1)
2735
y[-1,-7,-128,-5,-1,-3,-2,-1] = 14

0 commit comments

Comments
 (0)