这与我之前的问题类似,但稍微复杂一些。
之前,我定义了一个类型,其中包含一个关联的整数作为参数,Intp{p}。现在,我想使用向量作为参数来定义一个类型。
以下是我能够编写的最接近我所需求的代码:
之前,我定义了一个类型,其中包含一个关联的整数作为参数,Intp{p}。现在,我想使用向量作为参数来定义一个类型。
以下是我能够编写的最接近我所需求的代码:
type Extp{g::Vector{T}}
c::Vector{T}
end
换句话说,Extp应该相对于一个向量g进行定义,我希望内容c是另一个向量,其条目应与g的条目类型相同。
好吧,这行不通。
问题1:我认为我不能在类型参数中使用::。
问题2:我可以通过使g和c的类型任意并确保向量中的类型在构造函数中匹配来解决这个问题。但是,即使我完全取出所有内容并使用
type Extp{g}
c
end
仍然似乎不喜欢这样。当我尝试按照自己的方式使用它时,
julia> Extp {[1,1,1]}([0,0,1])
ERROR: type: apply_type: 在Extp中,期望Type{T<:Top}类型,得到Array{Int64,1}
那么,Julia是不是不喜欢将特定向量与类型关联?我所尝试的只能在整数中工作,就像我的Intp问题一样吗?
编辑:在文档中,我看到类型参数“实际上可以是任何类型(或者实际上是一个整数,虽然在这里它显然被用作类型)”。这是否意味着我正在问的是不可能的,而且这只有类型和整数适用于类型参数?如果是这样,为什么?(是什么使整数在Julia中以这种方式比其他类型更特殊?)