Je commence juste avec F # et je ne trouve pas la syntaxe pour faire l'initialisation d'objet comme dans C # 3.
C'est à dire. étant donné ceci:
public class Person {
public DateTime BirthDate { get; set; }
public string Name { get; set; }
}
comment puis-je écrire ce qui suit en F #:
var p = new Person { Name = "John", BirthDate = DateTime.Now };
Vous pouvez le faire comme ceci:
let p = new Person (Name = "John", BirthDate = DateTime.Now)
la réponse de CMS est définitivement correcte. Voici juste un ajout qui peut également être utile. En F #, vous voulez souvent écrire le type en utilisant simplement des propriétés immuables. Lorsque vous utilisez la syntaxe "initialiseur d'objet", les propriétés doivent être modifiables. Une alternative en F # est d'utiliser des arguments nommés, ce qui vous donne une syntaxe similaire, mais garde les choses immuables:
type Person(name:string, ?birthDate) =
member x.Name = name
member x.BirthDate = defaultArg birthDate System.DateTime.MinValue
Maintenant, nous pouvons écrire:
let p1 = new Person(name="John", birthDate=DateTime.Now)
let p2 = new Person(name="John")
Le code vous oblige à spécifier le nom, mais anniversaire est un argument facultatif avec une valeur par défaut.
Vous pouvez également omettre le mot clé new
et utiliser une syntaxe moins verbeuse:
let p = Person(BirthDate = DateTime.Now, Name = "John")
https://docs.Microsoft.com/en-us/dotnet/fsharp/language-reference/members/constructors