簡體   English   中英

如何在F#中創建類實例並填充屬性?

[英]How do I create a class instance and fill properties in F#?

在C#中,我可以:

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

我可以在F#中做同樣的事情嗎? 我的意思是,創建一個類指定一些屬性。

是:

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

請注意,F#方法實際上比C#方法更靈活,因為您可以在任何方法調用(不僅僅是構造函數)中使用“post hoc”屬性賦值。 例如,如果Person類型有一個名為CreatePerson : string -> Person的靜態方法CreatePerson : string -> Person ,它創建一個新人並指定名字,你也可以使用它:

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

F#還具有記錄 ,這些記錄基本上是具有自動公開屬性的類,這些屬性旨在表示命名值的簡單聚合,可選地包含成員。

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

let p = {FirstName = "John"; LastName = "Smith"}
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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM