2017-06-06 11 views
2

私は、このJavaコードに対応するScala構文を見つけようとしています。 Aがクラスaであると仮定し、メソッドsayHiを取得します。匿名オブジェクトのスカラ構文

new A().sayHi()は、有効なjava構文に従って完全にコンパイル可能です。一方、new A.sayHi()を試したとき、Scalaでコンパイルされません。このためにScalaにはどのような構文がありますか?

答えて

4

Scalaで、一つは次のいずれかを使用することができる:

new A().sayHi() 
(new A).sayHi() 

括弧なしとnewが先行した場合に、A.sayHiタイプとして解釈されるであろうとnew A.sayHi()は、クラスタイプA.sayHiのインスタンスであろう。 A.sayHiがコンパイルエラーとなるクラスタイプでない場合。

scala> class A { def sayHi() = "hi" }; object A { type sayHi = String } 
defined class A 
defined object A 

scala> new A().sayHi() 
res0: String = hi 

scala> new A.sayHi() // same as `new String()` 
res1: String = "" 

scala> (new A).sayHi() 
res2: String = hi 

を見てみましょう

関連する問題