14
空のかっこメソッドをobject
でオーバーライドするのはなぜですか?オブジェクトを使用したメソッドのオーバーライド
trait A {
def meth = {}
def meth_p() = {}
}
class B extends A {
object meth_p
} // compiles
括弧なしでメソッドをオーバーライドするコンパイルされません:
class B1 extends A {
object meth
} // does not compile
どちらも以下の組み合わせのいずれかが(override
修飾なし)働いています:
class BX extends A {
// of course, each declaration should get its own class
def meth = {}
def meth_p() = {}
def meth() = {}
def meth_p = {}
val meth = {}
val meth_p = {}
// ...
}
は、この文書で有用な動作です?私はちょうどこの偶発的なオーバーライドのために非常に微妙なバグに遭遇しました。
はい、これはさらにバグのようです。 – Debilski
https://issues.scala-lang.org/browse/SI-5429 – soc