具有抽象类型和定义类型的 Julia 类型

Julia types with abstract type and definied type

如何用一个抽象和一个定义的字段制作类型

像这样:

abstract AbstractType 

type type1 <: AbstractType
    x
    y
end

type type2 <: AbstractType
    w 
    z 
end

type MyType{T<:AbstractType}
         a::T
         b::Int64
 end

a = MyType(type1(1,2))

我尝试了一些构造函数,但效果不佳。

您需要 MyType 成为只有一个字段的类型,并允许该字段包含 type1(或两个)。即:

type MyType{T<:AbstractType}
         a::T
end

不清楚您要做什么。您最后一条语句不起作用的原因与混合类型关系不大,而与您试图在缺少输入参数的情况下实例化您的类型这一事实有关。

如果您希望能够使用 b 的默认值进行实例化,请定义适当的包装器构造函数:

abstract AbstractType
type type1 <: AbstractType; x; y; end
type type2 <: AbstractType; w; z; end
type MyType{T<:AbstractType}; a::T; b::Int64; end
MyType{T<:AbstractType}(t::T) = MyType(t,0);   # wrapper

julia> a = MyType(type1(1,2))
  MyType{type1}(type1(1, 2), 0)