Tür Parametresi Kısıtları
Genel parametrelerin protokole uyumlu olmasını zorunlu kılın.
Tür Parametresi Kısıtları, 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.
Jeneriklerin Özeti
Jenerik bir işlev, birçok türle çalışabilmek için <T> gibi bir tür parametresi kullanır. Ancak kısıtlanmamış T yalnızca aktarılabilir, incelenemez. Kısıtlamalar yeteneklerin kullanılmasını sağlar.
func identity<T>(_ x: T) -> T { x }
print(identity(5))
print(identity("hi"))Comparable Kısıtlaması
<T: Comparable> yazmak, T değerlerinin <, > ve benzeri işlemleri desteklemesini garanti eder; böylece bunları karşılaştırabilirsiniz.
func largest<T: Comparable>(_ a: T, _ b: T) -> T {
a > b ? a : b
}
print(largest(3, 9))
print(largest("apple", "pear"))Kısıtlamalar Neden Gereklidir?
Comparable olmadan derleyici a > b ifadesini reddeder; çünkü her tür bu işlemi desteklemez. Kısıtlama, işlemi yasal kılan güvencedir.
func minOf<T: Comparable>(_ list: [T]) -> T? {
list.min()
}
print(minOf([4, 2, 8])!)Equatable Kısıtlaması
Equatable, == ve != işlemlerini etkinleştirir. Eşleşen öğeleri saymak veya bulmak için kullanın.
func count<T: Equatable>(_ x: T, in list: [T]) -> Int {
list.filter { $0 == x }.count
}
print(count(2, in: [2, 3, 2, 2]))Hashable Kısıtlaması
Hashable, değerleri Set üyeleri veya sözlük anahtarları olarak kullanmanızı sağlar.
func unique<T: Hashable>(_ list: [T]) -> [T] {
Array(Set(list))
}
print(unique([1, 1, 2, 3, 3]).sorted())Protokol Kısıtlamaları
Herhangi bir protokol kısıtlama olabilir. Burada özel bir protokol, jenerik parametre üzerinde kendi yönteminin kullanılmasını sağlar.
protocol Speaker { func speak() -> String }
struct Dog: Speaker { func speak() -> String { "Woof" } }
func announce<T: Speaker>(_ x: T) {
print(x.speak())
}
announce(Dog())Sınıf Kısıtlamaları
T türünün belirli bir sınıftan kalıtım almasını gerektirebilir ve böylece o sınıfın üyelerine erişebilirsiniz.
class Animal { func name() -> String { "animal" } }
class Cat: Animal { override func name() -> String { "cat" } }
func describe<T: Animal>(_ x: T) { print(x.name()) }
describe(Cat())Birden Çok Kısıtlama
Aynı anda birden çok protokol gerektirmek için kısıtlamaları & ile birleştirin.
func show<T: CustomStringConvertible & Equatable>(_ a: T, _ b: T) {
print(a.description, a == b)
}
show(5, 5)Birden Çok Tür Parametresi
Bir işlevde, her birinin kendi gereksinimleri olan birden çok kısıtlanmış parametre bulunabilir.
func zipMap<K: Hashable, V>(_ keys: [K], _ vals: [V]) -> [K: V] {
var d: [K: V] = [:]
for (k, v) in zip(keys, vals) { d[k] = v }
return d
}
print(zipMap(["a", "b"], [1, 2]))Türlerde Kısıtlamalar
Yalnızca işlevler değil, jenerik türler de kısıtlamalar alır. Jenerik bir yapı, parametresinin bir protokole uymasını gerektirebilir.
struct SortedBox<T: Comparable> {
var items: [T]
var smallest: T? { items.min() }
}
print(SortedBox(items: [5, 1, 9]).smallest!)Sayısal Kısıtlamalar
Numeric gibi standart protokoller, jenerik kodun Int, Double ve diğer türler üzerinde aritmetik işlemler yapmasını sağlar.
func sum<T: Numeric>(_ list: [T]) -> T {
list.reduce(0, +)
}
print(sum([1, 2, 3]))
print(sum([1.5, 2.5]))Hızlı Kontrol
Tür parametresi kısıtlamaları konusundaki anlayışınızı sınayın.
Özet
Tür parametresi kısıtlamaları (<T: Protocol> veya <T: SomeClass>), derleyiciye bir jenerik türün neler yapabileceğini bildirir. Comparable, Equatable, Hashable, Numeric, özel protokoller, sınıf kısıtlamaları, & ile birden çok kısıtlama ve jenerik türlerdeki kısıtlamaları gördünüz.
Sıkça Sorulan Sorular
“Tür Parametresi Kısıtları” dersi ücretsiz mi?
Evet — “Tür Parametresi Kısıtları” 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.
“Tür Parametresi Kısıtları” dersinde ne öğreneceğim?
Genel parametrelerin protokole uyumlu olmasını zorunlu kılı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.
“Tür Parametresi Kısıtları” 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
- Tür Parametresi Kısıtları
- İşlevlerde where Cümleleri
- İlişkili Türleri Kısıtlama
- Genel Alt Betikler ve Uzantılar