3 votes

Initializeur d'objet + initialiseur de propriété (de C# à F#)

Je ai une personne et je veux initialiser le nom avec l'initialiseur de propriété et l'âge avec le constructeur.

Version C#

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(int age)
    {
        Age = age
    }
}

var person = new Person(20) { Name = "Alex" };

J'ai essayé avec F#:

Essayer 1: Syntaxe non valide

type Person = {
    Name: string
    Age: int
} with 
    static member create (age: int): Person =
        { this with Age = age }: Person

Essayer 2: Syntaxe non valide

type Person =
    member val Name: string
    member val Age: int

    new(age: int)
        this.Age = 13

6voto

kvb Points 35490

Devrait être aussi simple que

type Person(age:int) =
    member val Name = "" with get, set
    member val Age = age with get, set

let person = Person(20, Name = "Alex")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X