방금 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 };
답변
다음과 같이 할 수 있습니다.
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")
코드에는 이름을 지정해야하지만 생일은 일부 기본값이있는 선택적 인수입니다.
답변
new
키워드를 생략하고 덜 자세한 구문을 사용할 수도 있습니다 .
let p = Person(BirthDate = DateTime.Now, Name = "John")
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/members/constructors