我可以在Julia中专门化类型定义吗?

我可以在Julia中专门化类型定义吗?,julia,Julia,Julia的参数化类型实际上定义了一系列类型,这些类型在内存中包含不同的布局。我想知道这是否也适用于复合类型中的名称和字段数?一个简单的例子如下: type mytype{Float64} a::Float64 b::Float64 end type mytype{Int64} a::Int64 end 这给了我一个重新定义mytype的错误 在这里,如果mytype的类型参数是Float64,我希望有两个字段,如果它的Int64,则只有一个字段。(实际上我想要的更复

Julia的参数化类型实际上定义了一系列类型,这些类型在内存中包含不同的布局。我想知道这是否也适用于复合类型中的名称和字段数?一个简单的例子如下:

type mytype{Float64}
    a::Float64
    b::Float64
end

type mytype{Int64}
    a::Int64
end
这给了我一个重新定义
mytype
的错误


在这里,如果
mytype
的类型参数是
Float64
,我希望有两个字段,如果它的
Int64
,则只有一个字段。(实际上我想要的更复杂,但这是一个基本的例子)。你可以想象拥有抽象类型和
你可以分别定义这两种类型(
mytypeF
&
mytypeI
),并定义一个新类型
mytype
作为这两种类型的联合。然后,真正能够静态确定接收到的类型的函数将按照您的请求进行专门化。但我不确定这是否合理,或者你真正想要的是什么。

这目前不可能实现,但该功能被推测为“生成类型”正在讨论中。Sebastian的答案是合理的,只要您注意分组的
mytype
构造函数是类型稳定的。有关更完整的示例,请参见如何以编程方式围绕抽象
ImmutableArray
轨迹定义一组类型