Vazby let ve třídách (F#)
Pole private a soukromé funkce pro třídy F# lze definovat pomocí let vazby v definici třídy.
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Poznámky
Po prohlášení nadpis a dědičnost třídy, ale před všechny členské definice, zobrazí se předchozí syntaxe.Syntaxe je například let vazby vně třídy, ale názvy definované ve třídě mají obor, který je omezen na třídu.A let vytvoří vazba pole private nebo funkci; Chcete-li veřejně zpřístupnit data nebo funkce, prohlásit členské metodu nebo vlastnost.
A let vazba, která není statická se nazývá instance let vazby.Instance let vazby provést při vytváření objektů.Statické let vazby jsou součástí statické inicializátor třída je zaručena provést před prvním použití typu.
Kód v instanci let vazby můžete použít parametry konstruktoru primární.
Atributy a modifikátory přístupu nejsou povoleny v let vazby ve třídách.
Následující kód příklady ilustrují několik typů let vazby 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 takto.
10 52 1 204
Alternativní způsoby vytváření polí
Můžete také použít val klíčové slovo vytvořit pole private.Při použití val klíčové slovo pole není uvedena hodnota objekt vytvořen, ale místo toho je inicializována s výchozí hodnotou.Další informace naleznete v tématu Explicitní pole: Klíčové slovo val (F#).
Pole private můžete také definovat ve třídě pomocí definice členu a přidání klíčového slova private definici.To může být užitečné, pokud očekáváte, že změna usnadnění člena bez přepisování kódu.Další informace naleznete v tématu Řízení přístupu (F#).