二元运算符'!='无法应用于两个ListNode swift

时间:2016-07-30 07:18:13

标签: swift linked-list

我在互联网上搜索过没有任何有用的结果。我的问题很简单。如何比较两个ListNode是否相等?例如:

// plused is a ListNode
if plused != head?.next { // Binary operator '!=' cannot be applied to two ListNode 
    head?.val += 1
}

有谁能告诉我如何在Swift中执行此操作?

编辑,2016年7月31日:

这两个节点被声明为类实例

2 个答案:

答案 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")

如果此解决方案可以解析您的查询,请告诉我。