Genel Kısıtlamalar ve where Koşulları
Birden çok kısıtlama, aynı tür gereksinimleri ve koşullu genişletmeler uygulayın.
Genel Kısıtlamalar ve where Koşulları, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Genel Türler Tekrarı
Genel türler, herhangi bir türle çalışan esnek ve yeniden kullanılabilir kod yazmanızı sağlar.
func identity<T>(_ value: T) -> T { return value }
print(identity(42))
print(identity("hello"))Tek Tür Kısıtlaması
Genel bir parametreyi T: Protocol kullanarak bir protokole uyum sağlayacak şekilde kısıtlayın.
func largest<T: Comparable>(_ a: T, _ b: T) -> T {
return a > b ? a : b
}
print(largest(3, 7))& ile Birden Çok Kısıtlama
Bir türün birkaç protokole uyum sağlamasını, bunları & ile birleştirerek zorunlu kılın.
func process<T: Equatable & Hashable>(_ items: [T]) -> Set<T> {
return Set(items)
}
print(process([1,2,2,3]))İşlevlerde Koşul Cümleleri
Parametre listesinden sonra gelen bir where cümlesi, daha kesin kısıtlamalar eklemenizi sağlar.
func allEqual<T: Equatable>(_ array: [T]) -> Bool where T: CustomStringConvertible {
guard let first = array.first else { return true }
return array.allSatisfy { $0 == first }
}Uzantılarda Koşul Kullanımı
Bir türü yalnızca genel parametresi bir gereksinimi karşıladığında genişletin.
extension Array where Element: Numeric {
var sum: Element { reduce(0, +) }
}
print([1,2,3].sum)Aynı Tür Gereksinimleri
İki ilişkili türü T == U ile aynı tür olacak şekilde kısıtlayın.
func zip2<A: Sequence, B: Sequence>(_ a: A, _ b: B) -> [(A.Element, B.Element)]
where A.Element == B.Element {
return Swift.zip(a, b).map { ($0.0, $0.1) }
}Koşullu Uyum
Parametreleri kısıtlamaları karşıladığında genel bir türün bir protokole koşullu olarak uyum sağlamasını sağlayın.
extension Array: Equatable where Element: Equatable {
// stdlib already does this, shown for illustration
}
print([1,2] == [1,2])Kısıtlamalı Genel Sınıflar
Sınıf türleri de kısıtlamalar taşıyabilir ve örneklendirme sırasında tür güvenliğini sağlayabilir.
class Box<T: Codable> {
var value: T
init(_ v: T) { self.value = v }
}
let box = Box(42)İlişkili Tür Kısıtlamaları İçeren Protokol
İlişkili türleri kısıtlamak için protokol tanımlarında where kullanın.
protocol Container {
associatedtype Item: Equatable
var items: [Item] { get }
func contains(_ item: Item) -> Bool
}Birden Çok Koşul Cümlesi
Karmaşık gereksinimler için virgüllerle ayrılmış birden çok koşulu bir araya getirin.
func merge<C: Collection>(_ a: C, _ b: C) -> [C.Element]
where C.Element: Comparable, C.Element: Hashable {
return Array(Set(a + b)).sorted()
}Genel Tür Özelleştirmesi
Swift, performans iyileştirmesi sağlamak için derleme zamanında genel işlevleri somut türlere göre özelleştirir.
// @_specialize instructs the compiler to emit a specialized version
@_specialize(where T == Int)
func add<T: Numeric>(_ a: T, _ b: T) -> T { a + b }Kısa Kontrol
Genel bir türün hem Karşılaştırılabilir hem de Özetlenebilir protokollerine uyum sağlamasını nasıl zorunlu kılarsınız?
Ders Tekrarı
T: Protocol ile genel tür kısıtlamaları, & aracılığıyla birden çok kısıtlama, kesin gereksinimler için where cümleleri, aynı tür gereksinimleri ve koşullu uyum, genel kod üzerinde hassas denetim sağlar.
Sıkça Sorulan Sorular
“Genel Kısıtlamalar ve where Koşulları” dersi ücretsiz mi?
Evet — “Genel Kısıtlamalar ve where Koşulları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Genel Kısıtlamalar ve where Koşulları” dersinde ne öğreneceğim?
Birden çok kısıtlama, aynı tür gereksinimleri ve koşullu genişletmeler uygulayın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Genel Kısıtlamalar ve where Koşulları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Genel Kısıtlamalar ve where Koşulları
- some Anahtar Sözcüğüyle Saydam Olmayan Türler
- any ve Tür Silme ile Varoluşsal Türler
- Birincil İlişkili Türler ve Türlendirilmiş Throws