次のコードを定義しました (Scala IDE/Scala Worksheet with Scala 2.10):
object WorkSheet1 {
object A {
def apply(s: String, huh: Boolean = false): A = A(s)
}
case class A (s: String)
//case class A private (s: String)
val a = A("Oh, Hai")
}
そして、次の出力を正常に受け取りました。
a : public_domain.WorkSheet1.A = A(ああ、ハイ)
ただし、既存のものをコメントアウトしcase class A (s: String)
、もう一方 (「private」を含む) のコメントアウトを解除すると、次のコンパイラエラーが表示されます:「オブジェクト WorkSheet1 でクラス A のコンストラクター A にアクセスできません」。
コンパニオン オブジェクトがそのコンパニオン クラスのすべてのプライベート パーツにアクセスできることは、私の理解でした。へー。ええと...真剣に。何を与える?