Nesne Yönelimli Programlama
Generics ve Erişim
Jenerikler, erişim belirleyicileri ve modifier'lar.
Jenerikler, erişim belirleyicileri ve modifier'lar.
Referans
Bu sayfa 3 katalog öğesini kapsar. Aşağıdaki maddeler language-spec, örnekler ve katalog alanlarından üretilmiştir.
Jenerik bildirim
Nedir?
Model/fonksiyon/sınıf \<T,…\> ile jenerik. Tip argümanı çıkarılabiliyorsa yazılmayabilir.
Sözdizimi
model Sonuç<T> { başarılı: mantıksalveri: T? }fonksiyon ilk<T>(öğeler: liste<T>): T?Basit örnek
s: Sonuç<metin> = @Sonuç<metin> { başarılı = doğruveri = "Tamam" }syaz "{s.veri}"Çıktı
Tamam
Dikkat edilmesi gerekenler
- Çıkarım US0829; arity US0848.
Jenerik kısıt
Nedir?
Kısıt adları sınıf veya arayüz olmalı. Sağlanmazsa US0830.
Sözdizimi
sınıf Depo<T: Varlık> { }sınıf Depo<T: Varlık, Kaydedilebilir> { }Basit örnek
sınıf Depo<T: Varlık> { }Derin jenerikler
Nedir?
Kapalı jenerik tipler ayrıdır: Sonuç\<metin\> ≠ Sonuç\<tamsayı\>. Model/fonksiyon/sınıf \<T,…\> desteklenir; kısıt listesi sınıf veya arayüz adıdır. Çıkarım başarısızsa örtük dinamik’e düşülmez. Jenerik statik durum v0.1.0’da yoktur.
Ne zaman kullanılır?
Tip parametreli model, depo sınıfı veya kimlik fonksiyonu yazarken; basit liste\<T\> ötesinde kapalı tip gerektiğinde.
Parametreler ve dönüş
model Sonuç\<T\> \{ … \}, fonksiyon kimlik\<T\>(değer: T): T, sınıf Depo\<T: Varlık\>. Çağrıda tip çıkarılabiliyorsa yazılmayabilir. Yanlış ilkel değer alana yazılırsa US1508. Kısıt sağlanmazsa US0830; çıkarım US0829.
Kullanım
model Sonuç<T>{ başarılı: mantıksal veri: T?}fonksiyon kimlik<T>(değer: T): T{ => değer}sınıf Depo<T>{ öğe: T?}Basit örnek
model Sonuç<T>{ başarılı: mantıksal veri: T?}yazı: Sonuç<metin> = @Sonuç<metin> { başarılı = doğru veri = "Tamam" }sayı: Sonuç<tamsayı> = @Sonuç<tamsayı> { başarılı = doğru veri = 4 }syaz "{yazı.veri}"syaz "{sayı.veri}"Çıktı
Tamam 4
Geçersiz örnek
arayüz İşaret { fonksiyon işaret() }model Kutu<T: İşaret> { değer: T? }k: Kutu<tamsayı> = @Kutu<tamsayı> { }US0830 ConstraintFailed — tamsayı kısıtı karşılamaz.
Dikkat edilmesi gerekenler
- Basit kullanım dışı jenerik derinlik derleyicide PARTIAL (production-supported değil).
- Arity uyumsuzluğu US0848.
- Kısıtlar çalışma zamanında yeniden denetlenmez.