![](/img/trans.png)
[英]Trouble creating a companion object for a case class in Scala
[英]scala case class put methods in companion object?
在case類或伴隨對象中聲明方法是否“更干凈”(相應的更好的性能)?
例如
case class My(a:A) {
def m(args) = {...}
}
or
object My {
def m(m:My, args) = {...}
}
我寧願把方法放在case類中。 將它放在伴侶對象聽起來像Anemic Domain Model反模式AnemicDomainModel 。
此外,您可以稍后覆蓋案例類方法或擴展和混合一些特征。
最好將方法放在case類中; 這不是說課程的全部意義嗎? 一個object
是靜態的,通常是方法的一個不好的地方,因為這意味着他們需要再多拿一個參數。 我希望類中的方法執行得非常好,因為不需要加載伴隨對象實例(更一般地,它更接近JVM優化的樣式),但這幾乎肯定也是如此。在任何真正的程序中都有重要的區別。 當然沒有規則是絕對的; 如果你發現一個特定的方法似乎更適合於伴侶對象,那么無論如何都要把它放在那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.