เมื่อพยายามที่จะเข้าใจโปรแกรมหรือในบางมุมมันมีประโยชน์ที่จะสามารถรู้ได้ว่าจริงๆแล้วมันคืออะไร ฉันรู้ว่าตัวดีบั๊กสามารถแสดงข้อมูลบางอย่างให้คุณได้และคุณสามารถพึ่งพาการอนุมานเพื่อหลีกเลี่ยงการไม่ระบุประเภทในสถานการณ์เหล่านั้น แต่ถึงกระนั้นฉันก็อยากมีบางอย่างเหมือน Pythontype()
dynamicType (ดูคำถามนี้ )
อัปเดต:สิ่งนี้มีการเปลี่ยนแปลงใน Swift เวอร์ชันล่าสุดobj.dynamicType
ตอนนี้ให้การอ้างอิงถึงประเภทและไม่ใช่อินสแตนซ์ของประเภทไดนามิก
อันนี้ดูเหมือนจะมีแนวโน้มมากที่สุด แต่จนถึงขณะนี้ฉันยังไม่สามารถค้นหาชนิดที่แท้จริงได้
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
ฉันยังลองใช้การอ้างอิงคลาสเพื่อสร้างอินสแตนซ์ของวัตถุใหม่ซึ่งใช้งานได้ แต่มีข้อผิดพลาดเกิดขึ้นกับฉันว่าฉันต้องเพิ่มrequired
initializer:
การทำงาน:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
ยังเป็นเพียงก้าวเล็ก ๆ ที่ไปสู่การค้นพบชนิดของวัตถุใด ๆ ก็ตาม
แก้ไข : ฉันได้ลบรายละเอียดที่ไม่เกี่ยวข้องจำนวนมากตอนนี้ - ดูประวัติการแก้ไขหากคุณสนใจ :)
print(mc)
หรือdump(mc)
จะพิมพ์บทสรุป (ซึ่งคุณสามารถได้รับจากtoString(mc)
หรือreflect(mc).summary
) ซึ่งจะมีชื่อชั้นในนั้น แต่ยังไม่ชัดเจนว่าจะได้รับเพียงแค่ชื่อชั้นเรียนด้วยตัวเอง