Powiązania let w klasach (F#)
Można zdefiniować za pomocą pola private i prywatne funkcje dla klas F# let wiązania w definicji klasy.
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Uwagi
Składnia poprzedniego pojawia się po deklaracje pozycji i dziedziczenie klas, ale przed inne definicje Członkowskich.Składnia jest z let wiązania poza klasy, ale nazwy zdefiniowane w klasie mają zakres, który jest ograniczony do klasy.A let wiązania tworzy pole private lub funkcji; Aby ujawnić publicznie danych lub funkcje, zadeklarować właściwości lub metody Członkowskich.
A let wiążące, który nie jest instancją jest nazywany static let powiązania.Wystąpienie let wiązania wykonać, gdy obiekty są tworzone.Statyczne let powiązania są częścią statycznego inicjatora klasy, który na pewno zostanie wykonany przed typ najpierw jest używany.
Kod wewnątrz instancji let wiązania można używać parametrów podstawowego konstruktora.
Atrybuty i modyfikatorów ułatwień dostępu nie są dozwolone na let wiązania w klasach.
Poniższe przykłady kodu ilustrują kilka rodzajów let wiązania w klasach.
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)
Wprowadza dane wyjściowe.
10 52 1 204
Alternatywne sposoby tworzenia pól
Można również użyć val słowo kluczowe, aby utworzyć pole private.Podczas korzystania z val słowa kluczowego, pole nie podano wartości, gdy obiekt jest tworzony, ale zamiast tego jest inicjowany z wartością domyślną.Aby uzyskać więcej informacji, zobacz Pola jawne: val — Słowo kluczowe (F#).
Można również zdefiniować pola private w klasie, używając definicji składnika i dodanie słów kluczowych private do definicji.Może to być przydatne, jeśli oczekujesz, że zmiana dostępności członka bez poprawiania kodu.Aby uzyskać więcej informacji, zobacz Kontrola dostępu (F#).
Zobacz też
Informacje
do — Powiązania w klasach (F#)