【问题标题】:Swift equal function dont workSwift相等功能不起作用
【发布时间】:2014-11-19 10:46:27
【问题描述】:

我想检查对象之间的相等性,但出现错误。错误在代码中。

class Test {
    var key: String

    init(nameParam: String) {
        self.key = nameParam
    }


    func ==(other: Test) -> Bool {
        return other.key == self.key
    }

}

var t1 = Test(nameParam: "Test")
var t2 = Test(nameParam: "Test1")

if(t1 == t2) { // Error: 'Test' is not convertible to 'MirrorDisposition'
    println("...")
}

【问题讨论】:

标签: swift equals func


【解决方案1】:

操作符必须在全局范围内实现,而不是在类内部。所以你应该在类之外实现你的相等运算符:

class Test {...}

func == (lhs: Test, rhs: Test) -> Bool {
    return lhs.key == rhs.key
}

推荐阅读:Operator Functions

【讨论】:

    【解决方案2】:

    你应该这样写:

    class Test : Equatable {
        var key: String
    
        init(nameParam: String) {
            self.key = nameParam
        }
    
    
    
    
    }
    
    func ==(lhs:Test,rhs: Test) -> Bool {
        return lhs.key == rhs.key
    }
    
    var t1 = Test(nameParam: "Test")
    var t2 = Test(nameParam: "Test1")
    
    if(t1 == t2) {
        println("...")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      相关资源
      最近更新 更多