在类型“ XXX”中声明的运算符“ <”必须为“静态”

时间:2019-04-17 19:10:50

标签: swift

我具有以下实现,并且还添加了Comparable扩展,如下所示。但是我收到以下错误。我想知道如何解决它。

  

错误:在类型“ Item”中声明的运算符“ <”必须为“静态”       func <(lhs:Item,rhs:Item)-> Bool {            ^       静态

class Item
{
    var timeStamp : Date
    var value : Int

    init(_ value: Int)
    {
      self.value = value
      self.timeStamp = Date()
    }
}

extension Item: Comparable
{
    func < (lhs: Item, rhs: Item) -> Bool {
        return lhs.timeStamp < rhs.timeStamp
    }

    func == (lhs: Item, rhs: Item) -> Bool {
        return lhs.timeStamp == rhs.timeStamp
    }
}

1 个答案:

答案 0 :(得分:2)

Comparable协议要求<运算符实现是静态的。已记录在here中。您可以通过添加static关键字来修复代码,如下所示:

static func < (lhs: Item, rhs: Item) -> Bool {
     return lhs.timeStamp < rhs.timeStamp
}