关于这个数组索引算bug吗?

关于数组的索引,最近发现

julia> img = zeros(Float32, 20, 20, 9);

julia> img[CartesianIndex(2,2),1:end]
ERROR: BoundsError: attempt to access 20×20×9 Array{Float32,3} at index [2, 2, 1:20]
Stacktrace:
 [1] throw_boundserror(::Array{Float32,3}, ::Tuple{Int64,Int64,UnitRange{Int64}}) at ./abstractarray.jl:538
 [2] checkbounds at ./abstractarray.jl:503 [inlined]
 [3] _getindex at ./multidimensional.jl:669 [inlined]
 [4] getindex(::Array{Float32,3}, ::CartesianIndex{2}, ::UnitRange{Int64}) at ./abstractarray.jl:981
 [5] top-level scope at REPL[10]:1

julia> img[CartesianIndex(2,2),1:9]
9-element Array{Float32,1}:
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
julia> img = zeros(Float32, 20, 19, 9);

julia> img[CartesianIndex(2,2),1:end]
ERROR: BoundsError: attempt to access 20×19×9 Array{Float32,3} at index [2, 2, 1:19]
Stacktrace:
 [1] throw_boundserror(::Array{Float32,3}, ::Tuple{Int64,Int64,UnitRange{Int64}}) at ./abstractarray.jl:538
 [2] checkbounds at ./abstractarray.jl:503 [inlined]
 [3] _getindex at ./multidimensional.jl:669 [inlined]
 [4] getindex(::Array{Float32,3}, ::CartesianIndex{2}, ::UnitRange{Int64}) at ./abstractarray.jl:981
 [5] top-level scope at none:1

julia>

应该是在语法分析的时候,根据参数的位置来判定end的值

应该是不算一个bug吧,只能是说功能未实现–没有将 CartesianIndex 分解开??

但如果是一个别的什么函数,类似 CartesianIndex的功能呢?

a[i(1), i(2), ..., end, i(n+1)]里面的end是lastindex(a, n)的语法糖,完全取决于end是方括号里面的第几个参数。

这种情况下你可以img[Tuple(CartesianIndex(2,2))...,1:end]