Синтаксис инициализации объекта


Я только начинаю с F#, и я не могу найти синтаксис для инициализации объекта, как в C# 3.

т. е. учитывая это:

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

Как я могу написать следующее В F#:

var p = new Person { Name = "John", BirthDate = DateTime.Now };
2 87

2 ответа:

вы можете сделать это так:

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

ответ от CMS, безусловно, правильный. Вот только одно дополнение, которое может быть также полезно. В F# вы часто хотите написать тип, просто используя неизменяемые свойства. При использовании синтаксиса" инициализатор объекта " свойства должны быть изменяемыми. Альтернативой в F# является использование именованных аргументов, что дает вам аналогичный синтаксис, но сохраняет неизменяемость:

type Person(name:string, ?birthDate) =
  member x.Name = name
  member x.BirthDate = defaultArg birthDate System.DateTime.MinValue

теперь мы можем написать:

let p1 = new Person(name="John", birthDate=DateTime.Now)
let p2 = new Person(name="John")

код требует, чтобы вы указали имя, но день рождения необязательный аргумент с некоторым значением по умолчанию.