Compartilhar via


Associações let em classes (F#)

Você pode definir campos privados e funções private para classes de F# usando let ligações na definição de classe.

// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]

// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]

Comentários

A sintaxe anterior aparece após as declarações de título e a herança de classe, mas antes de quaisquer definições de membro. A sintaxe é como o do let ligações fora de classes, mas os nomes definidos em uma classe tem um escopo que é limitado à classe. A let vinculação cria um campo privado ou função; para expor publicamente os dados ou funções, declare uma propriedade ou um método membro.

A let de vinculação que não é estática é denominada uma instância de let vinculação. Instância let ligações executar quando objetos são criados. Estático let ligações são parte do inicializador estático para a classe, que é garantido para executar antes que o tipo é usado pela primeira vez.

O código de ocorrência let ligações podem usar parâmetros do construtor primário.

Modificadores de acessibilidade e atributos não são permitidas em let ligações em classes.

Os exemplos de código a seguir ilustram vários tipos de let ligações em 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)

A saída é da seguinte maneira.

10 52 1 204

Maneiras alternativas para criar campos

Você também pode usar o val palavra-chave para criar um campo particular. Ao usar o val palavra-chave, o campo não for dado um valor quando o objeto é criado, mas é inicializado com um valor padrão. Para obter mais informações, consulte Campos explícitos: a palavra-chave val (F#).

Você também pode definir campos particulares em uma classe usando uma definição de membro e adicionando a palavra-chave private na definição. Isso pode ser útil se você pretende alterar a acessibilidade de um membro sem reescrever o seu código. Para obter mais informações, consulte Controle de acesso (F#).

Consulte também

Referência

Associações do em classes (F#)

Associações let (F#)

Outros recursos

Membros (F#)