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.