以下のコードを実行すると、apply メソッドが呼び出されません。
object Tester2 {
def apply(){
println("apply")
}
def main(args: Array[String]) {
Tester2
}
}
しかし、適用メソッドのTester2()
代わりにメインメソッドで使用Tester
すると、呼び出されます
apply メソッドを呼び出すために () が必要なのはなぜですか?
以下のコードを実行すると、apply メソッドが呼び出されません。
object Tester2 {
def apply(){
println("apply")
}
def main(args: Array[String]) {
Tester2
}
}
しかし、適用メソッドのTester2()
代わりにメインメソッドで使用Tester
すると、呼び出されます
apply メソッドを呼び出すために () が必要なのはなぜですか?
Tester2
オブジェクト名、値です。式には単一の値のみを含めることができます。またはに置き換えることができTester2
ます。2
"str"
Tester2
結果タイプ の式Tester2.type
です。同様2
に、結果の型が の式Int
です。
メソッドを呼び出すapply
には、次のように括弧を追加する必要があります。
Tester2()
apply
括弧なしでメソッドを明示的に呼び出すことができます:
Tester2.apply
を呼び出すとTester2
、Tester2 オブジェクトが取得されます。を呼び出すとTester2()
、Tester2 オブジェクトの apply メソッドが呼び出されます。Scala では、構文 sugar as を使用するときに、新しいオブジェクトを作成するか、apply() を呼び出すかのあいまいさを解消するために、'()' が必要Tester2()
です。