programing tip

객체 초기화 구문

itbloger 2020. 8. 28. 07:07
반응형

객체 초기화 구문


방금 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

참고 URL : https://stackoverflow.com/questions/371878/object-initialization-syntax

반응형