클래스의 let 바인딩

클래스 정의의 바인딩을 사용하여 let F# 클래스에 대한 프라이빗 필드 및 프라이빗 함수를 정의할 수 있습니다.

구문

// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]

// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]

설명

이전 구문은 클래스 제목 및 상속 선언 뒤와 멤버 정의 앞에 나타납니다. 구문은 클래스 외부의 let 바인딩과 비슷하지만 클래스에 정의된 이름에는 클래스로 제한되는 범위가 있습니다. 바인딩은 let 개인 필드 또는 함수를 만듭니다. 데이터 또는 함수를 공개적으로 노출하려면 속성 또는 멤버 메서드를 선언합니다.

let 정적이지 않은 바인딩을 인스턴스 let 바인딩이라고 합니다. 인스턴스 let 바인딩은 개체를 만들 때 실행됩니다. 정적 let 바인딩은 클래스에 대한 정적 이니셜라이저의 일부로, 형식이 처음 사용되기 전에 실행되도록 보장됩니다.

인스턴스 let 바인딩 내의 코드는 기본 생성자의 매개 변수를 사용할 수 있습니다.

클래스의 바인딩에는 특성 및 접근성 한정자가 허용되지 let 않습니다.

다음 코드 예제에서는 클래스의 여러 형식의 let 바인딩을 보여 줍니다.

type PointWithCounter(a: int, b: int) =
    // A variable i.
    let mutable i = 0

    // A let binding that uses a pattern.
    let (x, y) = (a, b)

    // A private function binding.
    let privateFunction x y = x * x + 2 * y

    // A static let binding.
    static let mutable count = 0

    // A do binding.
    do count <- count + 1

    member this.Prop1 = x
    member this.Prop2 = y
    member this.CreatedCount = count
    member this.FunctionValue = privateFunction x y

let point1 = PointWithCounter(10, 52)

printfn "%d %d %d %d" (point1.Prop1) (point1.Prop2) (point1.CreatedCount) (point1.FunctionValue)

출력은 다음과 같습니다.

10 52 1 204

필드를 만드는 다른 방법

키워드(keyword) 사용하여 val 프라이빗 필드를 만들 수도 있습니다. 키워드(keyword) 사용하는 val 경우 개체를 만들 때 필드에 값이 제공되지 않고 대신 기본값으로 초기화됩니다. 자세한 내용은 명시적 필드: val 키워드를 참조하세요.

멤버 정의를 사용하고 정의에 키워드(keyword) private 추가하여 클래스에서 프라이빗 필드를 정의할 수도 있습니다. 이는 코드를 다시 작성하지 않고 멤버의 접근성을 변경하려는 경우에 유용할 수 있습니다. 자세한 내용은 Access Control을 참조하세요.

참고 항목