Когда вы пытаетесь понять программу или в некоторых сложных случаях, полезно иметь возможность на самом деле узнать, что это за тип. Я знаю, что отладчик может показать вам некоторую информацию о типе, и вы обычно можете полагаться на вывод типа, чтобы не указывать тип в таких ситуациях, но, тем не менее, мне бы очень хотелось иметь что-то вроде Pythontype()
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()
Тем не менее, это всего лишь небольшой шаг к фактическому обнаружению типа любого данного объекта.
редактирование : я удалил значительное количество теперь не относящихся к делу деталей - посмотрите историю изменений, если вам интересно :)
print(mc)
или dump(mc)
напечатает резюме (которое вы можете получить toString(mc)
или reflect(mc).summary
), которое будет содержать имя класса где-то там. Но не ясно, как получить только имя класса самостоятельно.