只需将我的评论转换为答案:
您的问题的答案是肯定的。正如朱莉娅的document 所说:
用类型论的说法,Julia 的类型参数是不变的,而不是协变的(甚至是逆变的)。
在下面的误导性案例中,人们可能会发现
julia> Int64 <: Int
true
julia> Array{Int64,1} <: Array{Int,1}
true
这是因为Int 和Int64 是同一类型。
julia> xdump(Int)
Int64::DataType <: Signed
julia> xdump(Int64)
Int64::DataType <: Signed
julia> xdump(Array{Int,1})
Array{Int64,1}::DataType <: DenseArray{Int64,1}
julia> xdump(Array{Int64,1})
Array{Int64,1}::DataType <: DenseArray{Int64,1}
我们可以使用typejoin来检查类型A和类型B及其对应的“数组”之间的关系。
julia> typejoin(Int64,Int)
Int64
julia> typejoin(Array{Int64,1},Array{Int,1})
Array{Int64,1}
但是
julia> typejoin(ASCIIString,String)
String
julia> typejoin(Array{String,1},Array{ASCIIString,1})
Array{T,N} (constructor with 9 methods)