Ao tentar entender um programa, ou em alguns casos extremos, é útil poder realmente descobrir que tipo de coisa é. Eu sei que o depurador pode mostrar algumas informações de tipo, e você geralmente pode confiar na inferência de tipo para não especificar o tipo nessas situações, mas ainda assim, eu realmente gostaria de ter algo como o Python.type()
dynamicType (veja esta pergunta )
Atualização: isso foi alterado em uma versão recente do Swift, obj.dynamicType
agora fornece uma referência ao tipo e não à instância do tipo dinâmico.
Este parece ser o mais promissor, mas até agora não consegui descobrir o tipo real
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Eu também tentei usar uma referência de classe para instanciar um novo objeto, que faz o trabalho, mas estranhamente me deu um erro dizendo que eu preciso adicionar umrequired
inicializador:
trabalho:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Ainda é apenas um pequeno passo para descobrir o tipo de um objeto em particular.
edit : removi um número substancial de detalhes agora irrelevantes - veja o histórico de edições se estiver interessado :)
print(mc)
ou dump(mc)
imprimirá um resumo (do qual você pode obter toString(mc)
ou reflect(mc).summary
), que conterá o nome da classe em algum lugar. Mas não está claro como obter apenas o nome da classe.