我需要爲少數案例類定製相等的方法。經過一些在線搜索,我沒有看到任何明確的解決方案。我應該寫我自己的平等檢查方法嗎?覆蓋Scala中的等於
0
A
回答
2
是。您需要定義自己的equals
方法:
case class Person(...) {
override def equals(other: Any): Boolean = {
...
}
override def hashCode: Int = {
...
}
}
的equals
方法看起來很容易,但它也可能是把戲。我強烈建議您閱讀Scala Cookbook的以下章節,瞭解如何在Artima:How to Write an Equality Method in Java和Define an equals Method (Object Equality)和這篇文章。
+0
感謝您的輸入。我的問題是關於案例類。對我的在線搜索來說,它和課堂不一樣。編譯器生成case類中的「==」。 – TeeKai
+0
是的。編譯器生成它們**如果你不**。但是,如果你這樣做,就像答案所示,編譯器不會生成它。 – marcospereira
相關問題
- 1. LINQ等於覆蓋
- 2. 在覆蓋等於
- 3. scala覆蓋無
- 4. 覆蓋Scala中的BasicDataSource
- 5. java,覆蓋和等於
- 6. 覆蓋等於不工作
- 7. 覆蓋等於方法
- 8. 在java中檢查對象是否等於不等於覆蓋
- 9. 如何覆蓋HashSet的等於和GetHash
- 10. 覆蓋HashCode如果我不需要覆蓋等於
- 11. 覆蓋Scala集合中的toString
- 12. 在scala中覆蓋的調用方法
- 13. 如何覆蓋scala中元組的值?
- 14. 覆蓋scala swing中textarea的paint方法
- 15. 覆蓋對象等於方法
- 16. EF Hashset集合 - 覆蓋等於和GetHashCode
- 17. 覆蓋等於方法問題
- 18. Pip等價於Bundler本地覆蓋
- 19. 類沒有使用覆蓋等於
- 20. 覆蓋通用等於方法
- 21. 覆蓋等於方法不起作用
- 22. 覆蓋等於和類型鑄造
- 23. 覆蓋等於只有一個方法
- 24. 等於方法 - 如何覆蓋
- 25. 覆蓋等於和比較字符串
- 26. 爲什麼ScriptReference沒有覆蓋等於?
- 27. scala覆蓋類參數
- 28. 覆蓋Scala枚舉值
- 29. 覆蓋Scala面板座標
- 30. 何時在Scala類中使用覆蓋?
我勸你慎重地考慮您的設計 - 如果你需要定製平等然後'情況class'很少是合適的。如果你只是想公開訪問這些字段,你可以使用'val'或者'var'聲明:'class MyClass(val x:Int,val y:String,...)'來實現。 – lmm