我使用下面的代码,
abstract P0
type P1 <: P0
x::Float64
y::Int64
P1()=new()
end
type P11 <: P0
z::Int64
p::P1
P11()=new()
end
并做了以下任务。
pp=P11()
我为类型P1获得 #undef ,如下所示:
P11(2211879264,#undef)
如何正确初始化?
答案 0 :(得分:2)
如果要对字段值强制实施约束或需要不完整的初始化,则只需要内部构造函数。后者就是你在这里所做的(请注意,不仅pp.p
而且pp.z
未被初始化。
否则,优选使用外部构造函数,例如,用于设置字段的默认值。例如:
abstract P0
type P1 <: P0
x::Float64
y::Int64
end
P1() = P1(0.0, 0)
type P11 <: P0
z::Int64
p::P1
end
P11() = P11(0, P1())
P11() # returns P11(0,P1(0.0,0))