当试图理解一个程序时,或者在某些极端情况下,能够真正找出某种类型的东西很有用。我知道调试器可以向您显示一些类型信息,并且通常可以依靠类型推断来避免在那种情况下不指定类型,但是,我仍然很想拥有类似Python的东西type()
dynamicType(请参阅此问题)
更新:在Swift的最新版本中对此进行了更改,obj.dynamicType
现在为您提供了对类型的引用,而不是动态类型的实例。
这似乎是最有前途的,但到目前为止我还无法找出实际的类型
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
我还尝试使用类引用实例化一个确实有效的新对象,但奇怪地给我一个错误,说我必须添加一个required
初始化程序:
作品:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
尽管实际上只是发现任何给定对象类型的一小步
编辑:我已经删除了大量现在不相关的详细信息-如果您有兴趣,请查看编辑历史记录:)
print(mc)
或dump(mc)
将显示摘要(您可以从toString(mc)
或获取reflect(mc).summary
),其中将包含某个地方的类名。但是还不清楚如何自己获得类名。