0

以下のコードを実行すると、apply メソッドが呼び出されません。

object Tester2 {

  def apply(){
    println("apply")
  }

  def main(args: Array[String]) {
    Tester2
  }
}

しかし、適用メソッドのTester2()代わりにメインメソッドで使用Testerすると、呼び出されます

apply メソッドを呼び出すために () が必要なのはなぜですか?

4

2 に答える 2

4

Tester2オブジェクト名、値です。式には単一の値のみを含めることができます。またはに置き換えることができTester2ます。2"str"

Tester2結果タイプ の式Tester2.typeです。同様2に、結果の型が の式Intです。

メソッドを呼び出すapplyには、次のように括弧を追加する必要があります。

Tester2()

apply括弧なしでメソッドを明示的に呼び出すことができます:

Tester2.apply
于 2013-08-08T21:28:16.277 に答える
2

を呼び出すとTester2、Tester2 オブジェクトが取得されます。を呼び出すとTester2()、Tester2 オブジェクトの apply メソッドが呼び出されます。Scala では、構文 sugar as を使用するときに、新しいオブジェクトを作成するか、apply() を呼び出すかのあいまいさを解消するために、'()' が必要Tester2()です。

于 2013-08-08T21:29:14.087 に答える