1

newキーワードなしでケース クラス インスタンスを開始すると、通常のクラスのメソッド内のケース クラスのメソッドにアクセスできないのはなぜですか? つまり、次のコードでは、コンパイル時にエラーが発生します。

case class A() {
  private var _g = 12

  //getter-setter
  def g = _g
  def g_=(value : Int) = this._g = value
}

class B {
  def someMethod = {
    val aInstance = A
    aInstance.g = 4; // compile time error. Why?
  }
}

しかし、宣言にnewキーワードを追加すると、すべて正常に動作します。aInstance

エラーメッセージは次のとおりです。

シンボル g を解決できません

4

2 に答える 2

3

( を呼び出す)でクラスAのインスタンスを作成する必要があります。それ以外の場合は、コンパニオン オブジェクト自体を参照しています。A()applyA

于 2013-05-06T20:25:48.443 に答える