constructor - F#تهيئة كائن مع منشئ




initialization (2)

فئة System.UriBuilder بكل يبدو وكأنه فئة Person في أوب، لذلك سوف تستخدم ذلك كمثال على ذلك:

> let ub = UriBuilder("http://blog.ploeh.dk", Path = "about");;    
val ub : UriBuilder = http://blog.ploeh.dk:80/about

أعرف أنه في F # إذا كان لديك فئة C # من التنسيق:

public class Person {
    public DateTime BirthDate { get; set; }
    public string Name { get; set; }
}

يمكنك تهيئة ذلك مثل ذلك، وهو لطيف:

let p = new Person (Name = "John", BirthDate = DateTime.Now)

ومع ذلك كيف يمكنك تهيئة في F # إذا كان فئة C # أيضا منشئ مثل هذا:

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; }
}

هل نحن مضطرون لاستخدام هذا الهيكل بدلا من ذلك؟

let p = new Person (123)
p.Name <- "John"
p.BirthDate <- DateTime.Now

قد يكون استخدام تركيبة 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




initialization