Sdílet prostřednictvím


Vazby let ve třídách

Privátní pole a privátní funkce pro třídy jazyka F# můžete definovat pomocí let vazeb v definici třídy.

Syntaxe

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

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

Poznámky

Předchozí syntaxe se zobrazí za nadpisem třídy a deklaracemi dědičnosti, ale před definicemi členů. Syntaxe je podobná let vazbám mimo třídy, ale názvy definované ve třídě mají obor, který je omezen na třídu. Vazba let vytvoří privátní pole nebo funkci, která veřejně zveřejňuje data nebo funkce, deklaruje vlastnost nebo metodu člena.

Vazba let , která není statická, se nazývá vazba instance let . Vazby instancí let se spustí při vytváření objektů. Statické let vazby jsou součástí statického inicializátoru pro třídu, což je zaručeno spuštění před prvním použití typu.

Kód v rámci vazeb instancí let může používat parametry primárního konstruktoru.

Atributy a modifikátory přístupnosti nejsou u vazeb ve třídách povoleny let .

Následující příklady kódu ilustrují několik typů let vazeb ve třídách.

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)

Výstup je následující.

10 52 1 204

Alternativní způsoby vytvoření polí

Pomocí klíčového val slova můžete také vytvořit soukromé pole. Při použití klíčového val slova pole není při vytváření objektu přiřazena hodnota, ale místo toho je inicializována s výchozí hodnotou. Další informace naleznete v tématu Explicit fields: The val Keyword.

Soukromá pole ve třídě můžete definovat také pomocí definice člena a přidáním klíčového slova private do definice. To může být užitečné, pokud očekáváte, že změníte přístupnost člena bez přepsání kódu. Další informace najdete v článku Access Control.

Viz také