Синтаксис инициализации объекта
Я только начинаю с 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 ответа:
ответ от 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")
код требует, чтобы вы указали имя, но день рождения необязательный аргумент с некоторым значением по умолчанию.