gpt4 book ai didi

julia - 为什么 Julia Int64、Float64 和 boolean 支持 getindex

转载 作者:行者123 更新时间:2023-12-05 00:46:20 24 4
gpt4 key购买 nike

在 Julia 中,你可以声明一个 Int64 , BoolFloat64并用 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++)中看到它。

最佳答案

原因有两个:

  • Julia 将数字视为 0维容器。
  • 如果您添加 1作为 getindex 中的维度索引号那么它不是错误,即使 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)
    ()

    有一个 open PR这提供了更多细节省略和额外的索引是如何工作的。

    关于julia - 为什么 Julia Int64、Float64 和 boolean 支持 getindex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351761/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com