Бөлісу құралы:


разрешить привязки в классах

Вы можете определить частные поля и частные функции для классов F# с помощью let привязок в определении класса.

Синтаксис

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

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

Замечания

Предыдущий синтаксис отображается после объявлений заголовка класса и наследования, но перед любыми определениями элементов. Синтаксис похож на let привязки вне классов, но имена, определенные в классе, имеют область, ограниченную классом. Привязка let создает частное поле или функцию, чтобы предоставлять данные или функции публично, объявлять свойство или метод-член.

Привязка let , которая не является статической, называется привязкой экземпляра let . Привязки экземпляров let выполняются при создании объектов. Статические let привязки являются частью статического инициализатора для класса, который гарантированно выполняется до первого использования типа.

Код в привязках экземпляра let может использовать параметры первичного конструктора.

Атрибуты и модификаторы специальных возможностей не допускаются для let привязок в классах.

В следующих примерах кода показано несколько типов let привязок в классах.

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)

Выходные данные выглядят следующим образом.

10 52 1 204

Альтернативные способы создания полей

Вы также можете использовать ключевое val слово для создания частного поля. При использовании ключевого val слова поле не получает значение при создании объекта, но вместо этого инициализируется со значением по умолчанию. Дополнительные сведения см. в разделе "Явные поля: ключевое слово val".

Вы также можете определить частные поля в классе с помощью определения члена и добавления ключевого слова private в определение. Это может быть полезно, если вы ожидаете изменить специальные возможности члена без перезаписи кода. Для получения дополнительной информации см. управление доступом.

См. также