我有一个记录类型:
type Person =
{
Name : string
Age : int
}
Run Code Online (Sandbox Code Playgroud)
我需要一个函数,它使用默认(在C#视点中)字段返回此记录的新实例.
我可以这样做:
let f =
{
Name = ""
Age = 0
}
Run Code Online (Sandbox Code Playgroud)
但我想避免所有字段枚举,并使用这样的东西:
let f = new Person
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
小智 11
F#允许向记录和区分联合添加方法/属性:
type Person =
{
Name: string
Age: int
}
with
static member Default = { Name = ""; Age = 0 }
Run Code Online (Sandbox Code Playgroud)
在FSI:
> Person.Default;;
val it : Person = {Name = "";
Age = 0;}
Run Code Online (Sandbox Code Playgroud)
用过的Unchecked.defaultof<'t>。但请注意,F# 记录是不可变的,因此这可能不是您想要的。