Lorsque vous essayez de comprendre un programme, ou dans certains cas, il est utile de pouvoir réellement savoir de quel type est un élément. Je sais que le débogueur peut vous montrer des informations de type, et vous pouvez généralement compter sur l'inférence de type pour éviter de spécifier le type dans ces situations, mais j'aimerais vraiment avoir quelque chose comme Pythontype()
dynamicType (voir cette question )
Mise à jour: cela a été changé dans une version récente de Swift, obj.dynamicType
vous donne maintenant une référence au type et non à l'instance du type dynamique.
Celui-ci semble le plus prometteur, mais jusqu'à présent, je n'ai pas pu trouver le type réel
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
J'ai également essayé d'utiliser une référence de classe pour instancier un nouvel objet, ce qui fonctionne, mais m'a étrangement donné une erreur disant que je dois ajouter un required
initialiseur:
travaux:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Mais ce n'est qu'un petit pas vers la découverte du type d'un objet donné
modifier : j'ai supprimé un nombre important de détails désormais non pertinents - consultez l'historique des modifications si vous êtes intéressé :)
print(mc)
ou dump(mc)
imprimera un résumé (que vous pouvez obtenir à partir de toString(mc)
ou reflect(mc).summary
), qui contiendra le nom de la classe quelque part. Mais il n'est pas clair comment obtenir vous-même le nom de la classe.