Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Başvuru hücreleri , başvuru semantiği ile değiştirilebilir değerler oluşturmanıza olanak tanıyan depolama konumlarıdır.
Sözdizimi
ref expression
Açıklamalar
işlevini kullanarak ref ilk değere sahip yeni bir başvuru hücresi oluşturursunuz. Ardından, temel alınan değeri değişebilir olduğundan değiştirebilirsiniz. Başvuru hücresi gerçek bir değer barındırıyor; bu sadece bir adres değil.
Aşağıdaki kod örneği, başvuru hücrelerinin bildirimini ve kullanımını gösterir.
let xRef = ref 10
printfn "%d" xRef.Value
xRef.Value <- 11
printfn "%d" xRef.Value
Çıktı aşağıdaki gibidir:
10
11
Başvuru hücreleri, aşağıdaki gibi bildirilen genel kayıt türünün örnekleridir Ref .
type Ref<'a> =
{ mutable contents: 'a }
türü 'a ref , için Ref<'a>bir eş anlamlıdır. IDE'deki derleyici ve IntelliSense bu tür için öncekini görüntüler, ancak temel alınan tanım ikincidir.
işleci ref yeni bir başvuru hücresi oluşturur. Aşağıdaki kod, işlecin bildirimidir ref .
let ref x = { contents = x }
Aşağıdaki tabloda, başvuru hücresinde kullanılabilen özellikler gösterilmektedir.
| İşleç, üye veya alan | Açıklama | Türü | Tanım |
|---|---|---|---|
ref (işleç) |
Bir değeri yeni bir başvuru hücresinde kapsüller. | 'a -> 'a ref |
let ref x = { contents = x } |
Value (özellik) |
Temel alınan değeri alır veya ayarlar. | unit -> 'a |
member x.Value = x.contents |
C# programcıları, C# dilinde F# ile aynı şey ref olmadığını bilmelidirref. F# içindeki eşdeğer yapılar, başvuru hücrelerinden farklı bir kavram olan byref'lerdir.
olarak mutable işaretlenmiş değerler, bir kapanış tarafından yakalanırsa otomatik olarak yükseltilebilir 'a ref ; bkz. Değerler.
Kullanım dışı yapılar
F# 6.0'dan bu yana aşağıdaki işleçler kullanım dışıdır ve kullanımları bilgilendirici uyarılar verir:
| İşleç, üye veya alan | Açıklama | Türü | Tanım |
|---|---|---|---|
! (başvuru kaldırma işleci, kullanım dışı) |
Temel alınan değeri döndürür. | 'a ref -> 'a |
let (!) r = r.contents |
:= (atama işleci, kullanım dışı) |
Temel alınan değeri değiştirir. | 'a ref -> 'a -> unit |
let (:=) r x = r.contents <- x |
contents (kayıt alanı) |
Temel alınan değeri alır veya ayarlar. | 'a |
let ref x = { contents = x } |
Bunun yerine doğrudan kullanımı .Value tercih edilir; bkz. F# RFC FS-1111.
Alan contents , ml'nin diğer sürümleriyle uyumluluk için sağlanır ve derleme sırasında bir uyarı oluşturur. Uyarıyı devre dışı bırakmak için derleyici seçeneğini kullanın --mlcompatibility . Daha fazla bilgi için bkz. Derleyici Seçenekleri.