Swift Academy · पाठ

is से प्रकारों की जाँच

कास्टिंग से पहले किसी इंस्टेंस के प्रकार की जाँच कीजिए।

पाठ 4, कुल 4 में से13 चरण

is से प्रकारों की जाँच, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

is ऑपरेटर

प्रकार-जाँच ऑपरेटर is एक Bool लौटाता है, जो बताता है कि कोई इंस्टेंस दिए गए प्रकार या उसके उपप्रकार का है या नहीं। यह कास्ट नहीं करता; केवल जाँच करता है।

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)

उपप्रकार की सदस्यता जाँचना

is तब true होता है जब इंस्टेंस ठीक उसी प्रकार का या उसके किसी उपवर्ग का हो। Dog एक Animal है।

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)

शर्तों में is का उपयोग

आप if के साथ प्रकार-जाँच के आधार पर शाखा चुन सकते हैं और रनटाइम प्रकार के अनुसार व्यवहार तय कर सकते हैं।

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")
}

संग्रह में प्रकारों की गिनती

is का एक उपयोगी प्रयोग मिश्रित ऐरे में किसी प्रकार से मेल खाने वाले तत्वों की संख्या गिनना है।

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)

प्रोटोकॉल के साथ is

is यह भी जाँचता है कि कोई इंस्टेंस किसी प्रोटोकॉल के अनुरूप है या नहीं। अनुरूप होने पर यह true लौटाता है।

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

is बनाम as?

is केवल हाँ या नहीं में उत्तर देता है। as? इससे आगे जाकर वह मान भी देता है, यदि आपको उपवर्ग के सदस्यों का उपयोग करना हो।

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 के साथ Guard

जब कोई इंस्टेंस अपेक्षित प्रकार का न हो, तो जल्दी बाहर निकलने के लिए guard में is का उपयोग करें।

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 में is का संयोजन

आप प्रकार-जाँच के आधार पर अप्रत्यक्ष रूप से स्विच कर सकते हैं, लेकिन कई प्रकारों को सँभालते समय case is के साथ पैटर्न मिलान अधिक स्पष्ट दिखाई देता है।

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 रनटाइम प्रकार की जाँच करता है

is घोषित चर के प्रकार के बजाय वास्तविक रनटाइम प्रकार की जाँच करता है। Animal प्रकार का कोई चर, जिसमें Dog हो, is Dog की जाँच में सफल होता है।

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)

बलपूर्वक कास्ट से पहले सत्यापन

एक सुरक्षित तरीका है कि पहले is से जाँच करें और उसके बाद ही as! का उपयोग करें, क्योंकि तब आप प्रकार की पुष्टि कर चुके होते हैं।

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())
}

प्रकार-जाँच का सारांश उदाहरण

रनटाइम प्रकारों के लिए जाँच हेतु is और कास्टिंग हेतु as? मिलकर आपको एक पूर्ण और सुरक्षित टूलकिट देते हैं।

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) }
}

त्वरित जाँच

याद करें कि is ऑपरेटर क्या लौटाता है।

पुनरावलोकन: is से प्रकारों की जाँच

आपने सीखा कि is उपवर्गों और प्रोटोकॉल अनुरूपता सहित रनटाइम प्रकार-सदस्यता के लिए Bool लौटाता है, फ़िल्टरिंग और switch case is के साथ अच्छी तरह काम करता है, और as! से पहले is से जाँच करने पर बलपूर्वक कास्ट सुरक्षित हो जाता है।

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)
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “is से प्रकारों की जाँच” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “is से प्रकारों की जाँच” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“is से प्रकारों की जाँच” में मैं क्या सीखूँगा?

कास्टिंग से पहले किसी इंस्टेंस के प्रकार की जाँच कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“is से प्रकारों की जाँच” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. अपकास्टिंग और डाउनकास्टिंग की मूल बातें
  2. as? से सशर्त कास्टिंग
  3. as! से अनिवार्य कास्टिंग और उसके जोखिम
  4. is से प्रकारों की जाँच
← Swift Academy पर वापस जाएँ