Swift 比较两个整数

Swift 比较两个整数,swift,swift3,Swift,Swift3,我正在链表中搜索特定的Int值,但收到错误“Binary operator!=不能应用于两个‘Int’操作数” 我的代码: //node.data is an Int //someInt is an Int if node.data != someInt {...} 我假设我可以比较Int值,因为Int符合equalable。有更好的方法吗 完整代码: class Node<Int> { var data: Int var next: Node? = nil

我正在链表中搜索特定的Int值,但收到错误“Binary operator!=不能应用于两个‘Int’操作数”

我的代码:

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

if node.data != someInt {...}
我假设我可以比较
Int
值,因为
Int
符合
equalable
。有更好的方法吗

完整代码:

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
            ...
        }
    }
}
类节点{
变量数据:Int
下一个变量:节点?=nil
初始化(数据:Int){
self.data=数据
}
}
类链接列表{
变量头:节点?
func find(someInt:Int){
var partitioningNode=头
//查找节点
保护变量节点=头节点{
打印(“empy链接列表”)
返回
}
如果node.data!=someInt{
partitioningNode=节点
...
}
}
}

在绝大多数情况下,像“二进制运算符。。。无法应用于两个“X”操作数,“当它完全可以应用于这些类型时,这只是诊断消息生成器中的一个错误。该区域可能存在其他类型错误。没有任何上下文(我们需要上下文),我会确保您记得从编码函数返回一些内容。有时这意味着“我想找到一个
=返回类似于
Float
的内容,而不是
Bool
,我找不到它,因此我抱怨
Int
。”


但是如果没有MCVE,就无法进一步调试它。您在附近的某个地方有一个类型错误。

我发现了问题…最初我的LinkedList和LinkedListNode类定义了一个泛型
。在重构时,我注意到不再需要泛型,节点中的数据只需要一个Int,所以我不正确地使用了将
替换为
,从而在尝试比较两个“整数”时导致错误“

真奇怪。。。这应该是完全好的,就像往常一样,a将是最有用的。确保它们真的是INT。他们可能是可选的,然后他们将需要!或运算符。很可能是另一个错误,该错误被给出的错误消息所掩盖。构建一个实际可验证的示例,您很可能会自己解决这个问题(因为构建这样的示例往往需要重构实际实现)。相关:我投票决定我们结束这个问题(没有任何价值;因为没有MCVE它是不可验证的,并且已经由OP整理好了),谢谢Rob,类型错误是我的问题。你仍然可以使用实现Equalable协议的泛型:类节点{var data:T var next:Node?=nil init(数据:T){self.data=data}}class LinkedList{var head:Node?func find(value:T)->Node?{var partitioningNode=head while partitioningNode!=nil{if let Node=partitioningNode,Node.data==value{return Node}partitioningNode=partitioningNode?.next}返回nil}