問題です。
以下のA2, B2, B3は、細かい定義方法は違うけれど、実際にはほとんど同じ定義ですが、インスタンス毎のサイズ(アロケーションされるメモリの量)、としては、どれが一番効率がいいでしょうか?どれも同じでしょうか?
この問題に完璧に答えられる自信がある人は、この先を読む必要がありません。
package example sealed abstract class A1(val x: Int) case class A2(y: String) extends A1(2) // 実用的には、その他のA1やB1のsub classやobjectも // あるかもしれないが、直接関係ないので省略 sealed abstract class B1 { def x: Int } case class B2(y: String) extends B1 { override def x: Int = 2 } case class B3(y: String) extends B1 { override val x: Int = 2 }続きを読む