Kısıtlamalar (where), tür çıkarımı
where kullanarak genel kodu kısıtlayın (ör. Equatable/Comparable veya Element kısıtlamaları) ve Swift'in çağrı noktalarında genel türleri nasıl çıkardığını görün.
Kısıtlamalar (where), tür çıkarımı, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 2. 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 3 dersten oluşur.
Kısıtlamalar neden kullanılır?
Jenerik kodun belirli işlemleri (örneğin == veya <) kullanabilmesi için kısıtlamalar ekleyin. Swift'in tür çıkarımı daha sonra çağrılarda somut türleri seçer.
Equatable kısıtlaması
where T: Equatable, eşitlik denetimlerine izin verir. Bu kısıtlama olmadan herhangi bir T için == kullanılamaz.
// Find the first index of value in an array of T
func indexOf<T>(_ value: T, in array: [T]) -> Int? where T: Equatable {
for (i, x) in array.enumerated() {
if x == value { return i } // allowed because T: Equatable
}
return nil
}
print(indexOf(3, in: [1,2,3,2]) ?? -1) // 2
print(indexOf("b", in: ["a","b","c"]) ?? -1) // 1Comparable kısıtlaması
T: Comparable gibi bir kısıtlama kullanmak, < gibi sıralama işlemlerini etkinleştirir.
// Return the minimum value of a collection when elements are Comparable
func minimum<T: Comparable>(_ xs: [T]) -> T? {
guard var best = xs.first else { return nil }
for x in xs.dropFirst() {
if x < best { best = x }
}
return best
}
print(minimum([7,3,9]) ?? -1) // 3
print(minimum(["b","a","c"]) ?? "?") // "a"where ile genişletme
Yalnızca belirli öğe türleri için API'ler eklemek amacıyla where Element: ... kullanın; burada söz konusu olan Equatable dizileridir.
// Add a helper only when the array's Element is Equatable
extension Array where Element: Equatable {
func removingDuplicates() -> [Element] {
var seen: [Element] = []
for x in self {
if !seen.contains(x) { seen.append(x) }
}
return seen
}
}
print([1,2,2,3].removingDuplicates()) // [1,2,3]Birden çok kısıtlama
Kısıtlamaları birleştirin: jenerik türü ve onun ilişkili türlerini kısıtlayın (örneğin S.Element: Equatable).
// Require both Sequence and Equatable elements; force same-type relationship
func allEqual<S>(_ s: S) -> Bool
where S: Sequence, S.Element: Equatable {
var it = s.makeIterator()
guard let first = it.next() else { return true }
while let v = it.next() { if v != first { return false } }
return true
}
print(allEqual([2,2,2])) // true
print(allEqual([1,2,1])) // falseUygulamada tür çıkarımı
Swift, bağımsız değişkenlerden ve bağlamdan jenerik parametreleri çıkarır; bu nedenle <T> ifadesini açıkça belirtmeniz nadiren gerekir.
// Inference: compiler deduces concrete types
let i = indexOf(10, in: [5,10,15]) // T is Int
let j = minimum(["z","x"]) // T is String
print(i ?? -1, j ?? "")where anlamı
Hızlı kontrol: where koşulu ne yapar?
Özet
Özet: Jenerikleri where ile kısıtlayın (örneğin T: Equatable veya Element: Comparable) ve çağrılarda somut türleri seçmesi için Swift'in tür çıkarımına güvenin.
Sıkça Sorulan Sorular
“Kısıtlamalar (where), tür çıkarımı” dersi ücretsiz mi?
Evet — “Kısıtlamalar (where), tür çıkarımı” 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 3 dersten oluşur.
“Kısıtlamalar (where), tür çıkarımı” dersinde ne öğreneceğim?
where kullanarak genel kodu kısıtlayın (ör. Equatable/Comparable veya Element kısıtlamaları) ve Swift'in çağrı noktalarında genel türleri nasıl çıkardığını görü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, 3 dersinin 2. dersidir.
“Kısıtlamalar (where), tür çıkarımı” 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 işlevler ve türler
- Kısıtlamalar (where), tür çıkarımı
- Koleksiyonlarda genel algoritmalar