Wenn Sie versuchen, ein Programm zu verstehen, oder in einigen Fällen, ist es hilfreich, tatsächlich herauszufinden, um welchen Typ es sich handelt. Ich weiß, dass der Debugger Ihnen einige Typinformationen anzeigen kann, und Sie können sich normalerweise auf Typinferenz verlassen, um nicht den Typ in solchen Situationen anzugeben, aber dennoch hätte ich wirklich gerne etwas wie Pythonstype()
dynamicType (siehe diese Frage )
Update: Dies wurde in einer neueren Version von Swift geändert und enthält obj.dynamicType
nun einen Verweis auf den Typ und nicht auf die Instanz des dynamischen Typs.
Dieser scheint der vielversprechendste zu sein, aber bisher konnte ich den tatsächlichen Typ nicht herausfinden
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Ich habe auch versucht, eine Klassenreferenz zu verwenden, um ein neues Objekt zu instanziieren, was funktioniert , aber seltsamerweise habe ich einen Fehler erhalten, der besagt, dass ich einen required
Initialisierer hinzufügen muss :
funktioniert:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Trotzdem nur ein kleiner Schritt, um den Typ eines bestimmten Objekts tatsächlich zu entdecken
Bearbeiten : Ich habe eine beträchtliche Anzahl von jetzt irrelevanten Details entfernt - schauen Sie sich den Bearbeitungsverlauf an, wenn Sie interessiert sind :)
print(mc)
oder dump(mc)
druckt eine Zusammenfassung (die Sie von toString(mc)
oder erhalten können reflect(mc).summary
), die irgendwo den Klassennamen enthält. Es ist jedoch nicht klar, wie Sie selbst nur den Klassennamen erhalten.