0
我有一個使用下面的聲明,但沒有初始化類成員的F#類:F#檢查如果val成員未初始化
[<DefaultValue>] val mutable myVariable : myType
我怎麼可以在代碼檢查該值是否已初始化?我試過:
x.myVariable = null
但這似乎並不奏效。
我有一個使用下面的聲明,但沒有初始化類成員的F#類:F#檢查如果val成員未初始化
[<DefaultValue>] val mutable myVariable : myType
我怎麼可以在代碼檢查該值是否已初始化?我試過:
x.myVariable = null
但這似乎並不奏效。
從你的描述中,很難說出你實際想要達到的目標 - 使用未初始化的值和繼承通常不是F#中的首選方式(但它們有時對於互操作性而言是必需的.NET),所以如果你遵循這個方向,你可能沒有從使用F#中獲得很多優勢。
以下不會爲你工作嗎?我們的想法是,我們定義一個基類,它的私人物品的價值,通過構造函數:
type Base(myThing : Random) =
member x.MyThing = myThing
而且繼承的類可以再提供價值,而且使用的成員訪問:
type MySubclass() =
inherit Base(new Random(0))
member x.Next() =
x.MyThing.Next()
在F#中不會使用'option'這樣的東西更具慣用性嗎? – vcsjones
是的。但我仍然在問。 – user3685285
看起來像'myType'這裏是一個值類型,所以它不會爲空,你可以比較'Unchecked.defaultof'但它有可能被初始化爲默認值,所以就像@vcsjones說它會很好在這裏使用'option' –