我试图在阅读发行说明的基础上理解Julia v0.6中的新类型系统.
任何人都可以告诉我什么
inv(M::Matrix{T}) where T <: AbstractFloat
Run Code Online (Sandbox Code Playgroud)
给了我与使用经典不同的东西
inv{T<:AbstractFloat}(M::Matrix{T})
Run Code Online (Sandbox Code Playgroud)
?
这与我之前的问题类似,但有点复杂.
在我定义一个带有关联整数作为参数的类型之前,Intp {p}.现在我想用vector作为参数定义一个类型.
以下是我能写的最接近我想要的内容:
type Extp{g::Vector{T}}
c::Vector{T}
end
Run Code Online (Sandbox Code Playgroud)
换句话说,Extp应该相对于Vector,g来定义,并且我希望内容c是另一个Vector,其条目应该是与g的条目相同的类型.
嗯,这不起作用.
问题1:我认为我不能在type参数中使用::.
问题2:我可以通过制作g和c的类型来解决这个问题,并确保向量中的类型在构造函数中匹配.但是,即使我完全把所有东西拿出来使用
type Extp{g}
c
end
Run Code Online (Sandbox Code Playgroud)
它似乎仍然不喜欢这个.当我尝试按照我想要的方式使用它时,
julia> Extp {[1,1,1]}([0,0,1])
错误:类型:apply_type:在Extp中,期望类型{T <:Top},得到数组{Int64,1}
那么,朱莉娅不喜欢特定的矢量与类型相关联吗?我正在尝试做的只适用于整数,就像在我的Intp问题中一样吗?
编辑:在文档中,我看到类型参数"可以是任何类型(或整数,实际上,虽然在这里它显然用作一种类型)." 这是否意味着我所要求的是不可能的,并且只有类型和整数适用于Type参数?如果是这样,为什么?(通过这种方式,什么使整数比Julia中的其他类型更特殊?)
julia ×2