permitir que as ligações 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: Val A 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 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
fazer ligações em Classes (F#)