जब एक कार्यक्रम, या कुछ कोने-मामलों को समझने की कोशिश कर रहा है, तो यह वास्तव में यह पता लगाने में सक्षम होना चाहिए कि कुछ प्रकार क्या है। मुझे पता है कि डिबगर आपको कुछ प्रकार की जानकारी दिखा सकता है, और आप आमतौर पर उन स्थितियों में प्रकार को निर्दिष्ट नहीं करने के साथ दूर होने के लिए टाइप इनेंस पर भरोसा कर सकते हैं, लेकिन फिर भी, मैं वास्तव में अजगर की तरह कुछ करना चाहूंगाtype()
डायनामिक टाइप ( यह प्रश्न देखें )
अद्यतन: यह स्विफ्ट के हाल के संस्करण में बदल दिया गया है, obj.dynamicType
अब आपको टाइप का संदर्भ देता है न कि डायनेमिक प्रकार का उदाहरण।
यह एक सबसे आशाजनक लगता है, लेकिन अभी तक मैं वास्तविक प्रकार का पता नहीं लगा पाया हूं
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
मैंने एक नई वस्तु को तुरंत भेजने के लिए एक क्लास रेफरेंस का उपयोग करने की भी कोशिश की, जो काम करता है , लेकिन अजीब तरह से मुझे एक त्रुटि दी कह रही है कि मुझे एक required
प्रारंभिक अक्षर जोड़ना होगा :
काम करता है:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
हालांकि वास्तव में किसी भी दी गई वस्तु के प्रकार की खोज की दिशा में केवल एक छोटा कदम है
संपादित करें : मैंने अब अप्रासंगिक विवरणों की एक बड़ी संख्या को हटा दिया है - यदि आप रुचि रखते हैं, तो संपादन इतिहास को देखें :)
print(mc)
या dump(mc)
एक सारांश मुद्रित करेगा (जिसे आप प्राप्त कर सकते हैं toString(mc)
या reflect(mc).summary
), जिसमें कहीं पर वर्ग का नाम होगा। लेकिन यह स्पष्ट नहीं है कि केवल अपने आप को वर्ग नाम कैसे प्राप्त किया जाए।