0
我用下面的代码,朱莉娅嵌套类型初始化
abstract P0
type P1 <: P0
x::Float64
y::Int64
P1()=new()
end
type P11 <: P0
z::Int64
p::P1
P11()=new()
end
,并做了如下分配。
P11(2211879264,#undef)
我怎样才能正确初始化:
pp=P11()
我的类型P1为以下获得和#undef?
我希望不完整的初始化。 z初始化,因为我达到了它pp.z 同时我刚刚初始化他们我修改代码为: P11()= new(1,P1()) –
我的意思是我想初始化它们的一些值先因为我将使用从文件读取的动态数组,并且我不希望将初始化器与文件读取功能一起从类型定义中移出。 –
对不起,我不明白。在你原来的代码中,'pp.z'只是解释恰好位于未初始化的内存位置的随机位,因为该字段是'bitstype'。 “P1”的字段也是如此。另一方面,'P11()。p'是一个引用,因此它是'#undef'直到你赋值,例如在构造函数中,或者由'pp.p = P1()'。此外,'P11()= new(1,P1())'会禁用默认的构造函数,因此可以更好地将其写成外部构造函数。 – tim