0Pricing
Swift Academy · Ders

is ile Tür Denetimi

Tür dönüşümünden önce bir örneğin türünü sınayın.

is ile Tür Denetimi, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.

is İşleci

Tür denetimi işleci is, bir örneğin belirli bir türde (veya alt türünde) olup olmadığını bildiren bir Bool değeri döndürür. Dönüştürme yapmaz; yalnızca denetler.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let a: Animal = Dog(name: "Rex")
print(a is Dog)
print(a is Cat)

Alt Tür Üyeliğini Denetleme

is, örnek tam olarak o türde veya onun herhangi bir alt türünde olduğunda doğru sonuç verir. Bir Dog, Animal türündedir.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let a: Animal = Dog(name: "Rex")
print(a is Animal)
print(a is Dog)

Koşullarda is Kullanma

if ile tür denetimine göre dallanabilir ve davranışı çalışma zamanı türüne göre seçebilirsiniz.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let a: Animal = Cat(name: "Mia")
if a is Cat {
    print("It is a cat")
} else {
    print("Not a cat")
}

Koleksiyondaki Türleri Sayma

is operatörü, karma bir dizide bir türle eşleşen öğelerin sayısını bulmak için kullanışlıdır.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let zoo: [Animal] = [Dog(name: "Rex"), Cat(name: "Mia"), Dog(name: "Buddy")]
let dogCount = zoo.filter { $0 is Dog }.count
print("Dogs:", dogCount)

Protokollerle is

is ayrıca bir örneğin bir protokole uyup uymadığını denetler ve uyuyorsa true döndürür.

protocol Flyer {}
class Bird: Flyer {}
class Fish {}
let creatures: [Any] = [Bird(), Fish()]
for c in creatures { print(c is Flyer) }

is ile as? Karşılaştırması

is yalnızca evet veya hayır yanıtı verir. Alt sınıf üyelerini kullanmanız gerekiyorsa as? bir adım daha ileri gider ve değeri size sağlar.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let a: Animal = Dog(name: "Rex")
print("Check only:", a is Dog)
if let d = a as? Dog { print("Use it:", d.bark()) }

is ile Koruma

Bir örnek beklenen türde değilse erkenden çıkmak için guard içinde is kullanabilirsiniz.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
func onlyForCats(_ a: Animal) {
    guard a is Cat else {
        print("Skipping non-cat")
        return
    }
    print("Processing a cat")
}
onlyForCats(Cat(name: "Mia"))
onlyForCats(Dog(name: "Rex"))

switch İçinde is Kullanımı

Tür denetimleri üzerinde dolaylı olarak switch kullanabilirsiniz; ancak birkaç türü işlerken case is ile desen eşleştirme daha okunaklıdır.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let items: [Any] = [Dog(name: "Rex"), 42, "hello"]
for item in items {
    switch item {
    case is Dog: print("a dog")
    case is Int: print("an integer")
    default: print("something else")
    }
}

is Çalışma Zamanı Türünü Denetler

is, bildirilen değişken türünü değil, gerçek çalışma zamanı türünü inceler. Bir Dog tutan ve Animal türündeki değişken, is Dog denetiminden geçer.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let declaredAsAnimal: Animal = Dog(name: "Rex")
print("Runtime is Dog:", declaredAsAnimal is Dog)

Zorunlu Tür Dönüşümünden Önce Doğrulama

Güvenli bir yaklaşım, is ile denetleyip yalnızca bundan sonra as! kullanmaktır; çünkü türü doğrulamış olursunuz.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let a: Animal = Dog(name: "Rex")
if a is Dog {
    let d = a as! Dog
    print(d.bark())
}

Tür Denetimi Özet Örneği

Denetim için is ve tür dönüşümü için as? birlikte kullanıldığında, çalışma zamanı türleri için eksiksiz ve güvenli bir araç setine sahip olursunuz.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let zoo: [Animal] = [Dog(name: "Rex"), Cat(name: "Mia")]
for a in zoo {
    if a is Dog { print("dog:", a.name) }
    if a is Cat { print("cat:", a.name) }
}

Hızlı Denetim

is operatörünün ne döndürdüğünü hatırlayın.

Özet: is ile Türleri Denetleme

is operatörünün, alt sınıflar ve protokole uyumluluk da dâhil olmak üzere çalışma zamanı tür üyeliği için bir Bool döndürdüğünü; filtrelemeyle ve switch case is ile iyi çalıştığını; ayrıca as! öncesinde is ile denetim yapmanın zorunlu tür dönüşümünü güvenli hâle getirdiğini öğrendiniz.

class Animal {
    let name: String
    init(name: String) { self.name = name }
}
class Dog: Animal {
    func bark() -> String { return name + " says Woof" }
}
class Cat: Animal {
    func meow() -> String { return name + " says Meow" }
}
let zoo: [Animal] = [Dog(name: "Rex"), Cat(name: "Mia"), Dog(name: "Buddy")]
print("Cats:", zoo.filter { $0 is Cat }.count)
print("Dogs:", zoo.filter { $0 is Dog }.count)

Sıkça Sorulan Sorular

“is ile Tür Denetimi” dersi ücretsiz mi?

Evet — “is ile Tür Denetimi” 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.

“is ile Tür Denetimi” dersinde ne öğreneceğim?

Tür dönüşümünden önce bir örneğin türünü sınayı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 4. dersidir.

“is ile Tür Denetimi” 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

  1. Üst Türe ve Alt Türe Dönüşümün Temelleri
  2. as? ile Koşullu Tür Dönüşümü
  3. as! ile Zorunlu Tür Dönüşümü ve Riskleri
  4. is ile Tür Denetimi
← Swift Academy Sayfasına Dön