Julia 的参数类型真正定义了一系列包含不同内存布局的类型。我想知道这是否也适用于复合类型中的名称和字段数?一个简单的例子是这样的:
type mytype{Float64}
a::Float64
b::Float64
end
type mytype{Int64}
a::Int64
end
这给了我重新定义
mytype
的错误.在这里,我想有两个字段 if
mytype
的类型参数是 Float64
如果是 Int64
,则只有一个. (其实我想要的比较复杂,但这是一个基本的例子)。可以想象有抽象类型和 <:
等在上面。我意识到这在其他语言中可能是不可能的,但在我看来,编译器应该能够像函数可以专门化一样来解决这个问题。毕竟,真正的(已编译的)代码将涉及具体类型,并且编译器会知道所有内容。 (对于真正的动态类型,在这种情况下可能需要额外的封装层?)
也许有一种不同/更好的方式来实现类似的结果?
最佳答案
您可以分别定义这两种类型( mytypeF
和 mytypeI
)并定义一个新类型 mytype
作为两者的结合。然后,真正可以静态确定它们收到的类型的函数将根据您的要求进行专门化。但我不确定这是明智的还是你真正想要的。
关于julia - 我可以在 Julia 中专门化类型定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858461/