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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk