Sınıflardaki let Bağlamaları
Sınıf tanımındaki bağlamaları kullanarak let
F# sınıfları için özel alanlar ve özel işlevler tanımlayabilirsiniz.
Sözdizimi
// Field.
[static] let [ mutable ] binding1 [ and ... binding-n ]
// Function.
[static] let [ rec ] binding1 [ and ... binding-n ]
Açıklamalar
Önceki söz dizimi, sınıf başlığı ve devralma bildirimlerinden sonra ancak üye tanımlarından önce görünür. Söz dizimi, sınıfların let
dışındaki bağlamalara benzer, ancak bir sınıfta tanımlanan adların sınıfıyla sınırlı bir kapsamı vardır. Bağlama let
, verileri veya işlevleri genel kullanıma açmak, bir özellik veya üye yöntemi bildirmek için özel bir alan veya işlev oluşturur.
let
Statik olmayan bağlamaya örnek let
bağlaması adı verilir. Nesneler oluşturulduğunda örnek let
bağlamaları yürütülür. Statik let
bağlamalar, türü ilk kez kullanılmadan önce yürütülmesi garanti edilen sınıfı için statik başlatıcının bir parçasıdır.
Örnek let
bağlamaları içindeki kod, birincil oluşturucunun parametrelerini kullanabilir.
Sınıflardaki bağlamalarda özniteliklere ve erişilebilirlik değiştiricilerine izin verilmez let
.
Aşağıdaki kod örnekleri, sınıflardaki çeşitli bağlama türlerini let
gösterir.
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)
Çıktı aşağıdaki gibidir:
10 52 1 204
Alan Oluşturmanın Alternatif Yolları
Özel alan oluşturmak için anahtar sözcüğünü val
de kullanabilirsiniz. anahtar sözcüğü kullanılırken val
, nesne oluşturulduğunda alana bir değer verilmez, bunun yerine varsayılan değerle başlatılır. Daha fazla bilgi için bkz . Açık Alanlar: Val Anahtar Sözcüğü.
Ayrıca bir üye tanımı kullanarak ve anahtar sözcüğünü private
tanıma ekleyerek bir sınıfta özel alanlar tanımlayabilirsiniz. Kodunuzu yeniden yazmadan bir üyenin erişilebilirliğini değiştirmeyi bekliyorsanız bu yararlı olabilir. Daha fazla bilgi için bkz. Erişim Denetimi.