Julia嵌套类型初始化

时间:2016-11-21 12:52:39

标签: types nested initialization julia abstract

我使用下面的代码,

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)

如何正确初始化?

1 个答案:

答案 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))