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