From 92cb22092c8f7123968efb05ecc90af326b1b24b Mon Sep 17 00:00:00 2001 From: Martin Holters Date: Wed, 20 Sep 2017 17:58:20 +0200 Subject: [PATCH] Add `Tuple(::CartesianIndex)` (#23719) --- base/multidimensional.jl | 4 ++++ test/arrayops.jl | 2 ++ 2 files changed, 6 insertions(+) diff --git a/base/multidimensional.jl b/base/multidimensional.jl index c9af4fef644ae..8e7a8990283a8 100644 --- a/base/multidimensional.jl +++ b/base/multidimensional.jl @@ -88,6 +88,10 @@ module IteratorsMD # indexing getindex(index::CartesianIndex, i::Integer) = index.I[i] + eltype(index::CartesianIndex) = eltype(index.I) + + # access to index tuple + Tuple(index::CartesianIndex) = index.I # zeros and ones zero(::CartesianIndex{N}) where {N} = zero(CartesianIndex{N}) diff --git a/test/arrayops.jl b/test/arrayops.jl index 89c1c27556d93..52c1f591e3d12 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -1554,6 +1554,8 @@ end @test min(CartesianIndex((2,3)), CartesianIndex((5,2))) == CartesianIndex((2,2)) @test max(CartesianIndex((2,3)), CartesianIndex((5,2))) == CartesianIndex((5,3)) + @test Tuple(I1) == (2,3,0) + # CartesianIndex allows construction at a particular dimensionality @test length(CartesianIndex{3}()) == 3 @test length(CartesianIndex{3}(1,2)) == 3