1

次のコードを定義しました (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 にアクセスできません」。

コンパニオン オブジェクトがそのコンパニオン クラスのすべてのプライベート パーツにアクセスできることは、私の理解でした。へー。ええと...真剣に。何を与える?

4

1 に答える 1