【发布时间】:2014-06-11 11:19:22
【问题描述】:
我知道我可以在 Swift 中使用 is 来检查 var 的类型
if item is Movie {
movieCount += 1
} else if item is Song {
songCount += 1
}
但是如何检查两个实例是否具有相同的类?以下方法不起作用:
if item1 is item2.dynamicType {
print("Same subclass")
} else {
print("Different subclass)
}
我可以很容易地添加一个“类”函数并在每个子类中更新它以返回一些独特的东西,但这看起来像是一个杂物......
【问题讨论】:
-
在 Swift 中通常不需要这样的比较。
-
嗯,我在示例中使用“子类”而不是“类”的原因是线索 - 有几个通常被类似对待的交互子类是很常见的,但是当它们被处理时会做一些特殊的事情相同 - 例如 Animal 的子类,它们与所有其他子类交互(例如,远离)所有其他子类,但不是它们自己的......
-
不,如果你检查两个类都是
Animal,你通常不会检查它们的类是否相同。如果您有具有相同接口的不同类(它们可以相互交互),但在某些情况下您不希望它们相互交互,那么您的设计就存在严重问题。 -
如果您仍然对
AnyObject的纯 Swift 解决方案持开放态度,请查看我的回答。 -
非常好 - 非常感谢!我已将接受的答案更改为您的答案。
标签: swift