4
實質上類似於subtle differences between val and def的問題。我不知道什麼是有一個成員單獨的對象之間的語義差別:val和singleton對象之間有什麼細微差別?
class Text {
...
object Whitespace { def unapply(s :String) =
if (s.forall(_.isWhitespace)) Some(s) else None
}
}
和
class Text {
...
val Whitespace = new { def unapply(s :String) =
if (s.forall(_.isWhitespace)) Some(s) else None
}
}
我知道如何都轉換爲字節碼,但我能在代碼中有一個這樣做,我可以」與另一個?
我會讓別人更充分的評論,但第二個使用反射來調用'unapply'!避免! (如果你只是覆蓋現有的方法或者實現一個抽象的方法,但是通過反射調用任何_new_方法,那很好,幸運的是,編譯器會警告你。) –
[Scala - new vs object extends] //sacklare.com/questions/16182735/scala-new-vs-object-extends) –
@RégisJean-Gilles我不同意。在你引用的問題中,所需的值擴展了一個給定的類,沒有額外的成員。在這裏,OP想要定義新成員(顯然這是看Rex評論的一個問題)。 – gzm0