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

F# check if val member is uninitialized

我有一个 F# class,它使用以下内容来声明,但不初始化 class 成员:

[<DefaultValue>] val mutable myVariable : myType

如何在代码中查看这个值是否已经初始化?我试过了:

x.myVariable = null

但这似乎不起作用。

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

以下方法不适合您吗?这个想法是我们定义一个基础class,它通过构造函数获取私有事物的值:

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

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

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