Bir programı anlamaya çalışırken veya bazı köşe durumlarda, bir şeyin ne olduğunu gerçekten bulmak yararlıdır. Hata ayıklayıcının size bazı tür bilgiler gösterebileceğini biliyorum ve genellikle bu tür durumlarda türü belirtmekten kaçınmak için tür çıkarımına güvenebilirsiniz, ancak yine de gerçekten Python gibi bir şeye sahip olmak istiyorumtype()
dynamicType ( bu soruya bakın )
Güncelleme: Bu, Swift'in son bir sürümünde değiştirildi, obj.dynamicType
şimdi size dinamik türün örneğine değil, türe referans veriyor.
Bu en umut verici görünüyor, ancak şimdiye kadar gerçek türü bulamadım
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Ayrıca , işe yarayan yeni bir nesne başlatmak için bir sınıf başvurusu kullanarak denedim , ama garip bir şekilde bir required
başlatıcı eklemeniz gerektiğini söyleyerek bir hata verdi :
İşler:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Yine de, verilen herhangi bir nesnenin türünü gerçekten keşfetmeye yönelik küçük bir adım
edit : Şimdi önemli olmayan birçok önemli ayrıntıyı kaldırdım - ilgileniyorsanız düzenleme geçmişine bakın :)
print(mc)
ya dump(mc)
da orada bir yerde sınıf adını içeren bir özet ( toString(mc)
veya alabilirsiniz reflect(mc).summary
) basacaktır . Ancak sadece sınıf adını kendiniz nasıl alacağınız açık değildir.