Мне нужно иметь собственный метод равный для нескольких классов case. После некоторых онлайн-поиска я не вижу никакого определенного решения. Должен ли я написать свой собственный метод проверки равенства?Переопределение равных в Scala
ответ
Да. Вам нужно будет определить свой собственный equals
метод:
case class Person(...) {
override def equals(other: Any): Boolean = {
...
}
override def hashCode: Int = {
...
}
}
Метод equals
выглядит просто, но это также может быть уловкой. Я настоятельно рекомендую вам прочитать следующую главу книги «Скала» о том, как Define an equals Method (Object Equality) и это эссе в Artima: How to Write an Equality Method in Java.
Спасибо за ваш вклад. Мой вопрос касается классов дел. Для моего онлайн-поиска это не то же самое, что класс. Значения равны «==», если класс генерируется компилятором. – TeeKai
Да. Компилятор генерирует их **, если вы не **. Но, если вы это сделаете, как показывает ответ, компилятор не будет генерировать его. – marcospereira
- 1. Переопределение равных и тип литья
- 2. Переопределение равных без пользовательского класса
- 3. Переопределение Vals в Scala
- 4. Коллекция EF Hashset - переопределение равных и GetHashCode
- 5. Переопределение равных только для одного метода
- 6. переопределение функции толчок в Scala
- 7. Переопределение запечатанной черты в Scala
- 8. Scala: переопределение именованного параметр
- 9. переопределение Scala карты
- 10. Переопределение значения перечисления Scala
- 11. Scala: переопределение типа коллекции
- 12. Scala Отклонение функции и переопределение
- 13. Scala - Переопределение метод интерфейса Java в классе Scala
- 14. Переопределение и унаследованные вторичные конструкторы в Scala
- 15. переопределение поведения параллельных коллекций в scala
- 16. Переопределение равных(), но не проверка всех полей - что произойдет?
- 17. Как работает метод равных значений Scala в случае списка?
- 18. Scala: переопределение hashCode String для теста
- 19. Scala: переопределение методов из интерфейса Java
- 20. Переопределение значений объекта Companion и Scala MatchError
- 21. Scala переопределение неабстрактного размораживания с варом
- 22. Scala 2,11 переопределение вещь образует абстрактный класс
- 23. Пожалуйста, помогите мне понять переопределение val в scala
- 24. Переопределение в Scala, перегруженных Java-методах, отличных от типа массива
- 25. Переопределение onRouteRequest с пользовательским обработчиком в Play! scala
- 26. Переопределение метода признака для конечного класса в Scala
- 27. Переопределение равенства для значений с плавающей запятой в Scala
- 28. Переопределение метода Java в Scala с использованием eclipse
- 29. Переопределение равных: рассказать IDE, что все в порядке, чтобы иметь разные значения?
- 30. Переопределение членов, имеющих типы Path Dependent в Scala. Объяснение необходимо с точки зрения Scala Спецификация языка
Я бы посоветовал вам тщательно рассмотреть ваш дизайн - если вам нужно индивидуальное равенство, тогда класс «случай» редко подходит. Если вы просто хотите, чтобы поля были общедоступными, вы можете сделать это с помощью обычного 'class', используя' val' или 'var' декларации:' class MyClass (val x: Int, val y: String, ...) '. – lmm