Julia中的单位范围类型是什么意思?
我尝试阅读OOP强类型backgrownd。我得到了大部分,但是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
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