При попытке понять программу или в некоторых угловых случаях полезно иметь возможность действительно узнать, что это за тип. Я знаю, что отладчик может показать вам некоторую информацию о типе, и вы обычно можете полагаться на вывод типа, чтобы уйти, не указав тип в этих ситуациях, но все же мне бы хотелось иметь что-то вроде Python type()
dynamicType (см. этот вопрос)
Обновление: это было изменено в недавней версии 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()
Еще только небольшой шаг к фактическому обнаружению типа любого данного объекта, хотя
edit. Я удалил значительное количество ненужных деталей - посмотрите, пожалуйста, историю изменений, если вам интересно: