Powiązania let w klasach
Można zdefiniować pola prywatne i funkcje prywatne dla klas języka F#, używając let
powiązań w definicji klasy.
Składnia
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Uwagi
Poprzednia składnia pojawia się po nagłówku klasy i deklaracjach dziedziczenia, ale przed definicjami składowych. Składnia jest podobna let
do powiązań spoza klas, ale nazwy zdefiniowane w klasie mają zakres ograniczony do klasy. let
Powiązanie tworzy pole prywatne lub funkcję; aby uwidocznić dane lub funkcje publicznie, zadeklarować właściwość lub metodę składową.
let
Powiązanie, które nie jest statyczne, jest nazywane powiązaniem wystąpienialet
. Powiązania wystąpień let
są wykonywane podczas tworzenia obiektów. Powiązania statyczne let
są częścią statycznego inicjatora klasy, który ma gwarancję wykonania przed pierwszym zastosowaniem typu.
Kod w powiązaniach wystąpień let
może używać parametrów konstruktora podstawowego.
Atrybuty i modyfikatory ułatwień dostępu nie są dozwolone w let
powiązaniach w klasach.
Poniższe przykłady kodu ilustrują kilka typów let
powiązań 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)
Dane wyjściowe są następujące:
10 52 1 204
Alternatywne sposoby tworzenia pól
Możesz również użyć słowa kluczowego val
, aby utworzyć pole prywatne. W przypadku używania słowa kluczowego val
pole nie otrzymuje wartości podczas tworzenia obiektu, ale zamiast tego jest inicjowane z wartością domyślną. Aby uzyskać więcej informacji, zobacz Jawne pola: słowo kluczowe val.
Możesz również zdefiniować pola prywatne w klasie przy użyciu definicji składowej i dodać słowo kluczowe private
do definicji. Może to być przydatne, jeśli spodziewasz się zmienić dostępność elementu członkowskiego bez ponownego pisania kodu. Aby uzyskać więcej informacji, zobacz Kontrola dostępu.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla