2
迄今爲止我讀過的結構的所有例子都是當所有字段都是可變的或所有字段都是不可變的。因此,該編譯罰款:如何用一個可變字段和一個不可變字段初始化一個結構體?
[<Struct>]
type Number(x:int) =
member this.X = x
所以做到這一點:
[<Struct>]
type Number =
val mutable X:int
new(x) = {X = x}
不過,我不知道如何寫一個明確的構造函數有一個字段可變的,一個不可改變的一個STRUC:
[<Struct>]
type Numbers(x:int) =
member this.X = x
val mutable Y:int
new(x,y) = ???
顯式構造函數必須清楚地調用隱式構造函數。迄今爲止我嘗試過的所有天真的解決方案都失敗了。
後續問題:不管解決方案是什麼,將字段Y分配一次或兩次(第一次使用默認值)?
謝謝!做'val X'和'member this.X'只在使用的構造函數中有所不同?如果是這樣,那麼爲什麼Microsoft在http://msdn.microsoft.com/zh-CN/library/dd469494.aspx中聲明「顯式字段不適用於例行使用」? – Arbil
實際上,'member this.X'是一個/屬性/,而不是字段 - 儘管編譯器最終會將構造函數參數'x'放入字段中,以便屬性實現可以訪問它。所以他們是兩個截然不同的東西,即使他們看起來一樣。我應該在我的回答中提到這一點,我會編輯它。 –
我明白了。謝謝! – Arbil