在尝试理解一个程序或某些特殊情况时,找出某个东西的类型是很有用的。我知道调试器可以显示一些类型信息,并且在这些情况下通常可以依靠类型推断来避免指定类型,但是仍然会想要像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
中获取),其中将包含类名。但是如何自己仅获取类名并不清楚。 - newacct