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.
Q# kullanıcı tanımlı struct türlerini destekler.
struct türleri F# dilindeki kayıt türlerine benzer; bunlar sabittir ancak bir kopyalama ve güncelleştirme yapısını destekler.
Yapı türleri
struct türleri yalnızca adlandırılmış öğeler içerebilir ve anonim öğeleri desteklemez. Adlandırılmış öğelerin herhangi bir bileşimi desteklenir, ancak öğeler iç içe yerleştirilemiyor.
Örneğin aşağıdaki bildirim, Complex ve Realolmak üzere iki adlandırılmış öğe içeren bir yapı Imaginary tanımlar ve her ikisi de Double:
struct Complex {
Real : Double,
Imaginary : Double,
}
İçerilen öğelere adları aracılığıyla veya yapısızlaştırma erişebilirsiniz (daha fazla bilgi için bkz. öğe erişimi). Ayrıca şeklin bildirimde tanımlananla eşleştiği tüm öğelerden oluşan bir demete unwrap işlecierişebilirsiniz.
struct türleri iki nedenden dolayı yararlıdır. İlk olarak, tanımlı türleri kullanan kitaplıklar ve programlar öğeleri yapısızlaştırma yerine adlarıyla eriştiği sürece, daha sonra herhangi bir kitaplık kodunu bozmadan ek öğeleri içerecek şekilde genişletilebilir. Bu nedenle, yapısızlaştırma yoluyla öğelere erişim önerilmez.
İkinci olarak Q#, öğe türleri aynı olsa bile iki struct türünün değerleri arasında otomatik dönüştürme olmadığından, belirli bir veri türü için amacı ve beklentileri iletmenizi sağlar.
Yapı oluşturucuları
Derleyici, bir struct tanımı okuduğunda yeni struct türleri için otomatik olarak oluşturucular oluşturur. Önceki örnekteki Complex yapısı için
let complexPair = Complex(1.4, 2.1);
Örnekleri new anahtar sözcüğüyle de tanımlayabilirsiniz, örneğin
let complexPair = new Complex { Real = 1.4, Imaginary = 2.1 };
Var olan bir yapıyı ... söz dizimi ile kopyalayabilirsiniz
let copyPair = new Complex { ...complexPair };
Kopyalama sırasında, değiştirebileceğiniz alanları tek tek belirtebilirsiniz
let updatedPair = new Complex { ...complexPair, Real = 3.5 };