使用默认值创建记录实例

Create record instance with default values

我有一个记录类型:

type Person = 
   {
       Name : string
       Age : int
   }

而且我需要一个函数,其中 returns 此记录的新实例具有默认(从 C# 的角度来看)字段。

我可以这样做:

let f = 
  {
     Name = ""
     Age = 0
  }

但我想避免所有字段枚举并使用如下内容:

let f = new Person

有什么办法吗?

已使用 unchecked.DefaultOf<'t>。但是请注意,F# 记录是不可变的,因此这可能不是您想要的。

F# 允许添加 methods/properties 到记录和区分联合:

type Person =
{
    Name: string
    Age: int
}
with
    static member Default = { Name = ""; Age = 0 }

在 FSI 中:

 > Person.Default;;
    val it : Person = {Name = "";
                       Age = 0;}