оператор '<', объявленный в типе 'XXX', должен быть 'static' - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть следующая реализация, а также добавлено расширение Comparable следующим образом.Но я получаю следующую ошибку.Интересно, как я мог это исправить.

ошибка: оператор '<', объявленный в типе 'Item', должен быть 'static' func <(lhs: Item, rhs: Item) -> Bool{^ static

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 Ответ

2 голосов
/ 17 апреля 2019

Протокол Comparable требует, чтобы реализация оператора < была статической. Это задокументировано здесь . Вы можете исправить свой код, добавив ключевое слово static следующим образом:

static func < (lhs: Item, rhs: Item) -> Bool {
     return lhs.timeStamp < rhs.timeStamp
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...