比较两个Ints

时间:2016-12-29 23:21:05

标签: swift swift3

我在链接列表中搜索特定的Int值,但是收到错误" Binary operator!=不能应用于两个' Int'操作数。

我的代码:

//node.data is an Int
//someInt is an Int

if node.data != someInt {...}

我认为我可以比较Int值,因为Int符合Equatable。有一个更好的方法吗?

完整代码:

class Node<Int> {
    var data: Int
    var next: Node? = nil

    init(data: Int) {
        self.data = data
    }
}

class LinkedList<Int> {
    var head: Node<Int>?
    func find(someInt: Int) {
        var partitioningNode = head

        //find node
        guard var node = head else {
            print("empy linked list")
            return
        }
        if node.data != someInt {
            partitioningNode = node
            ...
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在绝大多数情况下,像“二元运算符......不能应用于两个'X'操作数”这样的错误,当它绝对可以应用于这些类型时,只是一个错误在诊断消息生成器中。您可能在该区域中存在其他类型错误。没有任何上下文(我们需要上下文),我会确保你记得从编码函数返回一些东西。有时这意味着“我想找到一个!=,在这种情况下会返回Float而不是Bool,而我找不到,所以我抱怨{ {1}}而是。“

但是没有MCVE,就没有办法进一步调试它。你附近有一个类型错误。

答案 1 :(得分:0)

我发现了这个问题......最初我的LinkedList和LinkedListNode类定义了一个通用的<T>。在重构时,我注意到不再需要泛型,并且节点中的数据只需要是一个Int,因此我错误地将<T>替换为<Int>,从而在尝试比较两个时导致错误&#34;整数&#34;