Julia中的单位范围类型是什么意思?

Julia中的单位范围类型是什么意思?,julia,Julia,我尝试阅读OOP强类型backgrownd。我得到了大部分,但是UnitRange{Int}和它的使用方式对我来说并不清楚:它是数组还是整数?有人能用某种强类型语言来模拟UnitRange类型吗?让我们看看。我们可以通过调用构造函数显式地创建UnitRange{Int} julia> UnitRange{Int}(3,5) # equivalent to just saying 3:5 3:5 julia> typeof(ans) UnitRange{Int64} 使用@whic

我尝试阅读OOP强类型backgrownd。我得到了大部分,但是
UnitRange{Int}和它的使用方式对我来说并不清楚:它是数组还是整数?有人能用某种强类型语言来模拟
UnitRange
类型吗?

让我们看看。我们可以通过调用构造函数显式地创建
UnitRange{Int}

julia> UnitRange{Int}(3,5) # equivalent to just saying 3:5
3:5

julia> typeof(ans)
UnitRange{Int64}
使用
@which
宏,我们可以找到构造函数和类型的定义位置:

julia> @which UnitRange{Int}(3,5)
(::Type{UnitRange{T}})(start, stop) where T<:Real in Base at range.jl:255

因此,对于
T=Int64
,它实际上是两个整数。使用相同的技术,我们可以发现,从第563行开始,在同一个文件中定义了
UnitRange
s的迭代和索引。因此,
UnitRange{Int}
是一种具有两个整数字段的类型,用于定义索引和迭代器接口。有关接口的更多信息,请参阅。

您也可以执行:
julia>fieldnames(UnitRange{Int64})#(:start,:stop)
。另一种方法是单击文档中的“源”,如果您只想查看代码,则使用
@less
,这将只打开一个寻呼机,而不是使用编辑器打开文件。:)@crstnbr:喜爱链接-无法直接用“UnitRange Julia”进行谷歌搜索…很高兴我能帮上忙。
struct UnitRange{T<:Real} <: AbstractUnitRange{T}
    start::T
    stop::T
    UnitRange{T}(start, stop) where {T<:Real} = new(start, unitrange_last(start,stop))
end