Quando si cerca di capire un programma, o in alcuni casi angolari, è utile poter effettivamente scoprire di che tipo è qualcosa. So che il debugger può mostrarti alcune informazioni sul tipo, e di solito puoi fare affidamento sull'inferenza del tipo per evitare di specificare il tipo in quelle situazioni, ma comunque, mi piacerebbe davvero avere qualcosa come Pythontype()
dynamicType (vedi questa domanda )
Aggiornamento: questo è stato modificato in una versione recente di Swift, obj.dynamicType
ora fornisce un riferimento al tipo e non all'istanza del tipo dinamico.
Questo sembra il più promettente, ma finora non sono stato in grado di scoprire il tipo reale
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Ho anche provato ad utilizzare un riferimento di classe creare un'istanza di un nuovo oggetto, che fa il lavoro, ma stranamente mi ha dato un errore dicendo devo aggiungere un required
inizializzatore:
lavori:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Tuttavia, resta solo un piccolo passo verso la scoperta del tipo di un determinato oggetto
modifica : ho rimosso un numero considerevole di dettagli ora irrilevanti - guarda la cronologia delle modifiche se sei interessato :)
print(mc)
o dump(mc)
stamperà un sommario (che si può ottenere da toString(mc)
o reflect(mc).summary
), che conterrà il nome della classe da qualche parte. Ma non è chiaro come ottenere solo il nome della classe.