使用默认值创建记录实例

时间:2015-03-01 05:12:25

标签: f#

我有一个记录类型:

type Person = 
   {
       Name : string
       Age : int
   }

我需要一个函数,它使用默认(在C#视点中)字段返回此记录的新实例。

我可以这样做:

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

但我想避免所有字段枚举并使用类似的东西:

let f = new Person

有什么办法吗?

3 个答案:

答案 0 :(得分:9)

F#允许向记录和有区别的联盟添加方法/属性:

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

在FSI:

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

简单来说,您可以只使用let绑定。

type Person = 
   {
       Name : string
       Age : int
   }

let defaultPerson = { Name = ""; Age = 0 }