Luk*_*ett 10 f# constructor initialization
我知道在F#中如果你有一个格式的C#类:
public class Person {
public DateTime BirthDate { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样初始化它,这很好:
let p = new Person (Name = "John", BirthDate = DateTime.Now)
Run Code Online (Sandbox Code Playgroud)
但是如果C#类也有这样的构造函数,你将如何在F#中初始化它:
public class Person {
public Person(int id)
{
Id = id
}
public int Id {get; private set;}
public DateTime BirthDate { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我们是否被迫使用这种结构?
let p = new Person (123)
p.Name <- "John"
p.BirthDate <- DateTime.Now
Run Code Online (Sandbox Code Playgroud)
Stu*_*art 15
对自动属性使用等效F#语法可能如下所示.您可以将构造函数和属性初始化组合如下:
type Person(id : int) =
member val Id = id with get,set
member val BirthDate = DateTime.MinValue with get,set
member val Name = "" with get,set
let p = Person(5, Name = "Stu")
p |> Dump
Run Code Online (Sandbox Code Playgroud)
该System.UriBuilderBCL类看起来像Person在OP类,所以我将用其作为一个例子:
> let ub = UriBuilder("http://blog.ploeh.dk", Path = "about");;
val ub : UriBuilder = http://blog.ploeh.dk:80/about
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |