F#检查val成员是否未初始化

时间:2015-07-21 15:50:20

标签: f# null initialization

我有一个F#类,它使用以下命令来声明但不初始化类成员:

[<DefaultValue>] val mutable myVariable : myType

如何检查代码是否已初始化此值?我试过了:

x.myVariable = null

但这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

从你的描述中,很难说出你实际想要实现的目标 - 使用未初始化的值和继承通常不是F#中做事的首选方式(但它们有时是互操作性所必需的。 NET),所以如果你遵循这个方向,使用F#可能无法获得很多好处。

不会为您做以下工作吗?我们的想法是定义一个基类,它通过构造函数获取私有的值:

type Base(myThing : Random) =
  member x.MyThing = myThing

然后,继承的类可以提供值,但也可以使用成员访问它:

type MySubclass() =
  inherit Base(new Random(0))
  member x.Next() = 
    x.MyThing.Next()