为什么Julia Int64、Float64和boolean支持getindex
在Julia中,可以声明为什么Julia Int64、Float64和boolean支持getindex,julia,Julia,在Julia中,可以声明Int64、Bool或Float64并使用1对其进行索引 julia> aa = 10 10 julia> typeof(10) Int64 julia> aa[1] 10 julia> aa[0] ERROR: BoundsError Stacktrace: [1] getindex(::Int64, ::Int64) at .\number.jl:78 [2] top-level scope at none:0 julia>
Int64
、Bool
或Float64
并使用1
对其进行索引
julia> aa = 10
10
julia> typeof(10)
Int64
julia> aa[1]
10
julia> aa[0]
ERROR: BoundsError
Stacktrace:
[1] getindex(::Int64, ::Int64) at .\number.jl:78
[2] top-level scope at none:0
julia> aa[2]
ERROR: BoundsError
Stacktrace:
[1] getindex(::Int64, ::Int64) at .\number.jl:78
[2] top-level scope at none:0
这种功能的存在有实际或理论上的原因吗?我从未在我使用过的任何其他语言(Python、Ruby、Matlab、C++)中见过它。原因有两个:
0
-维容器getindex
中添加1
作为维度索引号,则即使1
超出容器的维度,也不是错误julia> a = 1
1
julia> b = [1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> a[]
1
julia> a[1,1,1,1]
1
julia> b[2,1,1,1,1]
2
请注意,为容器定义的标准函数是为数字定义的,其行为类似于0
-维对象,例如:
julia> size(a)
()
julia> axes(a)
()
有一个例子给出了省略索引和额外索引如何工作的更多细节。实际上,在Matlab中您会看到完全相同的情况。在Matlab中,标量只是1x1矩阵。