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.
Kayıt kopyalama ve güncelleştirme ifadesi, var olan bir kaydı kopyalayan, belirtilen alanları güncelleştiren ve güncelleştirilmiş kaydı döndüren bir ifadedir.
Sözdizimi
{ record-name with
updated-labels }
{| anonymous-record-name with
updated-labels |}
Açıklamalar
Kayıtlar ve anonim kayıtlar varsayılan olarak sabittir, bu nedenle var olan bir kaydı güncelleştirmek mümkün değildir. Güncelleştirilmiş kayıt oluşturmak için kaydın tüm alanlarının yeniden belirtilmesi gerekir. Bu görevi basitleştirmek için bir kopyalama ve güncelleştirme ifadesi kullanılabilir. Bu ifade var olan bir kaydı alır, ifadeden belirtilen alanları ve ifade tarafından belirtilen eksik alanı kullanarak aynı türde yeni bir kayıt oluşturur.
Bu, var olan bir kaydı kopyalamanız ve alan değerlerinden bazılarını değiştirmeniz gerektiğinde yararlı olabilir.
Örneğin yeni oluşturulan bir kaydı alın.
let myRecord2 =
{ MyRecord.X = 1
MyRecord.Y = 2
MyRecord.Z = 3 }
Bu kayıttaki yalnızca iki alanı güncelleştirmek için kayıt kopyalama ve güncelleştirme ifadesini kullanabilirsiniz:
let myRecord3 = { myRecord2 with Y = 100; Z = 2 }
İç İçe Kayıt Kopyalama ve Güncelleştirme
F# 7.0 ve sonraki sürümlerde, kopyalama ve güncelleştirme ifadesi iç içe kayıt alanlarındaki güncelleştirmeleri destekleyecek şekilde geliştirilmiştir. Bu özellik, iç içe yerleştirilmiş kayıtlarla çalışırken daha kısa söz dizimi sağlar.
Aşağıdaki örneği inceleyin:
Önce
type SteeringWheel = { Type: string }
type CarInterior = { Steering: SteeringWheel; Seats: int }
type Car = { Interior: CarInterior; ExteriorColor: string option }
let beforeThisFeature x =
{ x with Interior = { x.Interior with
Steering = {x.Interior.Steering with Type = "yoke"}
Seats = 5
}
}
Sonra
Yeni özellik ile iç içe yerleştirilmiş alanlara ulaşmak ve bunları doğrudan güncelleştirmek için nokta gösterimini kullanabilirsiniz:
let withTheFeature x =
{ x with Interior.Steering.Type = "yoke"; Interior.Seats = 5 }
Bu söz dizimi birden çok with ifade gereksinimini ortadan kaldırır. Bunun yerine, aynı ifadede birden çok alanın (farklı iç içe yerleştirme düzeylerinde bile) güncelleştirilmesini sağlarken, iç içe yerleştirilmiş alanlarda güncelleştirmelerin doğrudan belirtilmesine olanak tanır.
Anonim Kayıtlar
Aynı söz dizimi uzantısı anonim kayıtlarda da çalışır. Ayrıca, bu söz dizimini kullanarak normal kayıtları anonim kayıtlara kopyalayıp güncelleştirebilir ve işlemde yeni alanlar ekleyebilirsiniz:
let updatedRecord =
{| originalRecord with
Interior.Seats = 4;
Price = 35000 |}
Bu esneklik, normal veya anonim kayıtlarla çalışırken aynı kısa söz diziminin geçerli olmasını sağlar.