如何在Julia中使用向量作为类型参数

Ale*_*ber 3 julia

这与我之前的问题类似,但有点复杂.

在我定义一个带有关联整数作为参数的类型之前,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中的其他类型更特殊?)

tho*_*oly 5

在Julia 0.4中,您可以使用任何"bitstype"作为类型的参数.但是,向量不是bitstype,所以这不会起作用.最接近的模拟是使用元组:例如,(3.2, 1.5)是一个完全有效的类型参数.

在某种意义上,向量(或任何可变对象)与类型是对立的,它们在运行时不会改变.