Partilhar via


Deixe as ligações de 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 é limitado para a 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ático é chamado de uma instância let de 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 o tipo é usado pela primeira vez.

O código de ocorrência let ligações podem usar parâmetros. o 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 a 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: O val palavra-chave (F#).

Você também pode definir campos particulares em uma classe usando uma definição de membro e adicionando a palavra-chave private a 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

fazer ligações de Classes (F#)

Deixe as ligações (F#)

Conceitos

Membros (F#)