Saat mencoba memahami suatu program, atau dalam beberapa kasus, berguna untuk dapat benar-benar mengetahui jenis sesuatu itu. Saya tahu debugger dapat menunjukkan kepada Anda beberapa jenis informasi, dan Anda biasanya dapat mengandalkan inferensi tipe untuk lolos dengan tidak menentukan jenis dalam situasi tersebut, tapi tetap saja, saya benar-benar ingin memiliki sesuatu seperti Python.type()
dynamicType (lihat pertanyaan ini )
Pembaruan: ini telah diubah di versi terbaru Swift, obj.dynamicType
sekarang memberi Anda referensi ke tipe dan bukan turunan tipe dinamis.
Yang ini sepertinya yang paling menjanjikan, tapi sejauh ini saya belum bisa menemukan tipe yang sebenarnya
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Saya juga mencoba menggunakan referensi kelas untuk instantiate objek baru, yang tidak bekerja, tapi anehnya memberi saya sebuah kesalahan mengatakan saya harus menambahkan required
initializer:
bekerja:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Masih hanya langkah kecil menuju benar-benar menemukan jenis objek yang diberikan sekalipun
edit : Saya telah menghapus sejumlah besar detail yang sekarang tidak relevan - lihat riwayat edit jika Anda tertarik :)
print(mc)
atau dump(mc)
akan mencetak ringkasan (yang bisa Anda dapatkan dari toString(mc)
atau reflect(mc).summary
), yang akan berisi nama kelas di suatu tempat. Tetapi tidak jelas bagaimana cara mendapatkan nama kelas sendiri.