【发布时间】:2016-03-17 16:43:29
【问题描述】:
我有两个 AnyObject? 变量,我想比较它们的引用相等性:
var oldValue: AnyObject?
var newValue: AnyObject?
...
if oldValue != newValue {
changed = true
}
但这不起作用,因为我显然无法直接比较两个选项。我希望这种行为就像我在 Objective-C 中比较 ids 一样,即:
-
true如果两者都是nil -
true如果两者都有值并且值也相等 -
false否则
有没有一种优雅的方式在 Swift 中编写(最好不需要编写自定义扩展)?
这是我想出的最好的:
if !(oldValue != nil && newValue != nil && oldValue == newValue)
不是很漂亮。 :(
【问题讨论】:
-
真的是这样吗?!我总是忘记那个操作员!
-
@sbarow 我想你真的明白了。如果您需要代表,请发布答案。
-
参考比较是我想要的。我没有发布变量获取值的代码。
-
由于 Javascript 及其与
==和===的时髦行为,我无法忘记该运算符;-)