在C#中,我可以:如何在F#中創建類實例並填充屬性?
var n = new Person()
{
FirstName = "John",
LastName = "Smith"
};
我可以做在F#一樣的嗎?我的意思是,創建一個類和指定一些屬性。
在C#中,我可以:如何在F#中創建類實例並填充屬性?
var n = new Person()
{
FirstName = "John",
LastName = "Smith"
};
我可以做在F#一樣的嗎?我的意思是,創建一個類和指定一些屬性。
是:
let n = Person(FirstName = "John", LastName = "Smith")
注意,F#的做法實際上是比C#的方式更靈活,因爲你可以用「事後」屬性分配與任何方法調用(而不僅僅是構造函數) 。例如,如果Person
類型有一個名爲CreatePerson : string -> Person
靜態方法,它創建了一個新的人,並指定名字,你也可以用它喜歡:
let n = Person.CreatePerson("John", LastName = "Smith")
+1不知道這工作與方法調用。 – Daniel 2011-02-07 16:52:53
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")
F#也有records它們基本上班,自動公開的屬性,這些屬性可以表示指定值的簡單集合,可選地包含成員。 [F#對象初始化語法]的
type Person = {
FirstName : string;
LastName : string;
}
let p = {FirstName = "John"; LastName = "Smith"}
可能重複(http://stackoverflow.com/questions/371878/f-object-initialization-syntax) – 2011-02-07 21:00:45