Liaisons let dans des classes
Vous pouvez définir des champs et fonctions privés pour les classes F# à l’aide de liaisons let
dans la définition de classe.
Syntaxe
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Notes
La syntaxe précédente apparaît après les déclarations d’en-tête de classe et d’héritage, mais avant les définitions de membres. La syntaxe est similaire à celle des liaisons let
en dehors des classes, mais les noms définis dans une classe ont une étendue limitée à cette dernière. Une liaison let
crée un champ privé ou une fonction ; pour exposer publiquement des données ou des fonctions, déclarez une propriété ou une méthode membre.
Une liaison let
qui n’est pas statique est appelée liaison d’instance let
. Les liaisons d’instance let
s’exécutent lorsque des objets sont créés. Les liaisons statiques let
font partie de l'initialisateur statique pour la classe, qui est garantie d’être exécutée avant que le type soit utilisé pour la première fois.
Le code dans les liaisons d’instance let
peut utiliser les paramètres du constructeur principal.
Les attributs et les modificateurs d’accessibilité ne sont pas autorisés sur les liaisons let
dans les classes.
Les exemples de code suivants illustrent plusieurs types de liaisons let
dans les classes.
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)
La sortie est la suivante.
10 52 1 204
Autres façons de créer des champs
Vous pouvez également utiliser le mot-clé val
pour créer un champ privé. Lorsque vous utilisez le mot-clé val
, le champ n’a pas de valeur lorsque l’objet est créé, mais il est initialisé avec une valeur par défaut. Pour plus d’informations, consultez Champs explicites : le mot-clé val.
Vous pouvez également définir des champs privés dans une classe à l’aide d’une définition de membre et ajouter le mot-clé private
à la définition. Cela peut être utile si vous prévoyez de modifier l’accessibilité d’un membre sans réécrire votre code. Pour obtenir plus d'informations, voir Contrôle d'accès.
Voir aussi
- Members (Membres)
- Liaisons
do
dans des classes let
Liaisons