2011-02-07 63 views
3

在C#中,我可以:如何在F#中创建类实例并填充属性?

var n = new Person() 
{ 
    FirstName = "John", 
    LastName = "Smith" 
}; 

我可以做在F#一样的吗?我的意思是,创建一个类指定一些属性。

+1

可能重复(http://stackoverflow.com/questions/371878/f-object-initialization-syntax) – 2011-02-07 21:00:45

回答

12

是:

let n = Person(FirstName = "John", LastName = "Smith") 

注意,F#的做法实际上是比C#的方式更灵活,因为你可以用“事后”属性分配与任何方法调用(而不仅仅是构造函数) 。例如,如果Person类型有一个名为CreatePerson : string -> Person静态方法,它创建了一个新的人,并指定名字,你也可以用它喜欢:

let n = Person.CreatePerson("John", LastName = "Smith") 
+3

+1不知道这工作与方法调用。 – Daniel 2011-02-07 16:52:53

2
type Person() = 

    [<DefaultValue>] 
    val mutable firstName : string 

    [<DefaultValue>] 
    val mutable lastName : string 

    member x.FirstName 
     with get() = x.firstName 
     and set(v) = x.firstName <- v 

    member x.LastName 
     with get() = x.lastName 
     and set(v) = x.lastName <- v 

let p = new Person(FirstName = "Nyi", LastName = "Than") 
3

F#也有records它们基本上班,自动公开的属性,这些属性可以表示指定值的简单集合,可选地包含成员。 [F#对象初始化语法]的

type Person = { 
    FirstName : string; 
    LastName : string; 
} 

let p = {FirstName = "John"; LastName = "Smith"} 
相关问题