Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez définir des champs privés et des fonctions privées pour les classes F# à l’aide let de liaisons dans la définition de classe.
Syntaxe
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Remarques
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 let liaisons en dehors des classes, mais les noms définis dans une classe ont une étendue limitée à la classe. Une let liaison 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 let liaison 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 let liaisons statiques font partie de l’initialiseur 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 let les liaisons dans les classes.
Les exemples de code suivants illustrent plusieurs types de let liaisons 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 val mot clé pour créer un champ privé. Lorsque vous utilisez le val mot clé, le champ n’a pas de valeur lorsque l’objet est créé, mais 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 plus d’informations, consultez Contrôle d’accès.