Bagikan melalui


Pengikatan let di Kelas

Anda dapat menentukan bidang privat dan fungsi privat untuk kelas F# dengan menggunakan pengikatan let dalam definisi kelas.

Sintaks

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

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

Keterangan

Sintaks sebelumnya muncul setelah judul kelas dan deklarasi pewarisan, tetapi sebelum definisi anggota. Sintaksnya seperti pengikatan let di luar kelas, tetapi nama yang ditentukan dalam kelas memiliki cakupan yang terbatas pada kelas. Pengikatan let membuat bidang atau fungsi privat; untuk mengekspos data atau fungsi secara publik, mendeklarasikan properti atau metode anggota.

Pengikatan let yang tidak statis disebut pengikatan instans let. Pengikatan instans let dijalankan saat objek dibuat. Pengikatan statis let adalah bagian dari penginisialisasi statis untuk kelas, yang dijamin akan dijalankan sebelum jenis pertama kali digunakan.

Kode dalam pengikatan instans let dapat menggunakan parameter konstruktor utama.

Pengubah atribut dan aksesibilitas tidak diizinkan pada pengikatan let di kelas.

Contoh kode berikut mengilustrasikan beberapa jenis pengikatan let di kelas.

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)

Outputnya sebagai berikut.

10 52 1 204

Cara Alternatif untuk Membuat Bidang

Anda juga dapat menggunakan kata kunci val untuk membuat bidang privat. Saat menggunakan kata kunci val, bidang tidak diberi nilai saat objek dibuat, tetapi sebaliknya diinisialisasi dengan nilai default. Untuk informasi selengkapnya, lihat Bidang Eksplisit: Kata Kunci val.

Anda juga dapat menentukan bidang privat di kelas dengan menggunakan definisi anggota dan menambahkan kata kunci private ke definisi. Hal ini dapat berguna jika Anda berharap untuk mengubah aksesibilitas anggota tanpa menulis ulang kode Anda. Untuk informasi selengkapnya, lihat Kontrol Akses.

Lihat juga