Намагаючись зрозуміти програму або в деяких кутових випадках, корисно мати можливість фактично з’ясувати, що таке щось. Я знаю, що налагоджувач може показати вам інформацію про тип, і ви, як правило, можете покластися на висновок типу, щоб уникнути, не вказуючи тип у цих ситуаціях, але все-таки я дуже хотів би мати щось на зразок Python'stype()
dinamiльний тип (див. це питання )
Оновлення: це було змінено в останній версії Swift, 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
), яке буде містити назву класу десь там. Але незрозуміло, як самостійно отримати лише назву класу.