具有抽象类型和定义类型的 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)
如何用一个抽象和一个定义的字段制作类型
像这样:
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)