我在互联网上搜索过没有任何有用的结果。我的问题很简单。如何比较两个ListNode是否相等?例如:
// plused is a ListNode
if plused != head?.next { // Binary operator '!=' cannot be applied to two ListNode
head?.val += 1
}
有谁能告诉我如何在Swift中执行此操作?
编辑,2016年7月31日:
这两个节点被声明为类实例
答案 0 :(得分:1)
!=
是Equatable
协议提供的运算符。如果您的ListNode
类型(结构,类等)不符合该协议(通过实现==
函数),那么您将无法使用!=
他们。
答案 1 :(得分:0)
我猜你应该使用identity运算符来比较实例。
Equal:===
不等于:!==
示例代码:
if instance1 === instance { print("Equal") }
if instance1 !== instance { print("Not Equal") }
更新了示例: Swift中的解决方案
class ListNode {
init() { print("Initializing node") }
}
class Head {
var next: ListNode
init(withNode node: ListNode) { next = node }
}
let plused = ListNode()
let head = Head(withNode: plused)
//(plused != head.next) ? print("Equal") : print("Not Equal")
(object_getClass(plused) == object_getClass(head.next)) ? print("Equal") : print("Not Equal")
如果此解决方案可以解析您的查询,请告诉我。