Enlaces let en clases
Puedes definir campos privados y funciones privadas para las clases de F# mediante let
enlaces en la definición de clase.
Sintaxis
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Comentarios
La sintaxis anterior aparece después del encabezado de clase y las declaraciones de herencia, pero antes de cualquier definición de miembro. La sintaxis es similar a la de los enlaces fuera de let
las clases, pero los nombres definidos en una clase tienen un ámbito limitado a la clase. Un let
enlace crea un campo o función privado; para exponer datos o funciones públicamente, declara una propiedad o un método miembro.
Un let
enlace que no es estático se denomina enlace de instancia let
. Los enlaces de instancia let
se ejecutan cuando se crean objetos. Los enlaces estáticos let
forman parte del inicializador estático de la clase, que se garantiza que se ejecute antes de usar el tipo por primera vez.
El código de los enlaces de instancia let
puede usar los parámetros del constructor principal.
Los atributos y los modificadores de accesibilidad no se permiten en let
los enlaces de las clases.
En los ejemplos de código siguientes se muestran varios tipos de let
enlaces en clases.
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 salida es la siguiente.
10 52 1 204
Formas alternativas de crear campos
También puedes usar la val
palabra clave para crear un campo privado. Cuando se usa la palabra clave val
, el campo no recibe un valor cuando se crea el objeto, sino que se inicializa con un valor predeterminado. Para obtener más información, consulta Campos explícitos: la palabra clave val.
También puedes definir campos privados en una clase mediante una definición de miembro y agregar la palabra clave private
a la definición. Esto puede ser útil si esperas cambiar la accesibilidad de un miembro sin volver a escribir el código. Para obtener más información, consulta Access Control.
Consulte también
- Miembros
do
Bindings in Classes (Enlacesdo
en clases)let
Enlaces