переопределить метод equals для строкового класса в пакете в проекте scala - PullRequest
0 голосов
/ 27 мая 2019

Итак, проблема в том, что говорится. Я хочу переопределить поведение equals в строковом классе в определенном пакете.

Я посмотрел вокруг, и в основном кажется, что нет никакого способа сделать это.

Самое близкое к определению метода в существующем классе было следующее:

implicit class StringImprovements(s: String) {
  def increment = s.map(c => (c + 1).toChar)
}

и затем используйте его так -

"HAL".increment

Что, честно говоря, удивительно. Но затем я попытался переопределить «равные», используя тот же подход, он не работает. Я осмотрелся и нашел этот вопрос с 2015 года - переопределить метод библиотеки с использованием Scala Implicit

Ссылаясь на строку вышеупомянутого вопроса -

Имплики используются, если компилятор scala не может найти метод без него, поэтому вы не можете переопределить методы с имплицитами

Но, учитывая, что релизы Scala очень часты, и все постоянно меняется, мне было интересно, возможно ли сделать это сейчас, с помощью этих средств или любым другим способом.

Заранее спасибо!

1 Ответ

2 голосов
/ 27 мая 2019

Нет, это невозможно.И если бы это было так, я бы ожидал, что много библиотечного кода сломалось, потому что ожидалось нормальное поведение от String#equals!

...