2
私は、このJavaコードに対応するScala構文を見つけようとしています。 Aがクラスaであると仮定し、メソッドsayHiを取得します。匿名オブジェクトのスカラ構文
new A().sayHi()
は、有効なjava構文に従って完全にコンパイル可能です。一方、new A.sayHi()
を試したとき、Scalaでコンパイルされません。このためにScalaにはどのような構文がありますか?
私は、このJavaコードに対応するScala構文を見つけようとしています。 Aがクラスaであると仮定し、メソッドsayHiを取得します。匿名オブジェクトのスカラ構文
new A().sayHi()
は、有効なjava構文に従って完全にコンパイル可能です。一方、new A.sayHi()
を試したとき、Scalaでコンパイルされません。このためにScalaにはどのような構文がありますか?
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
:
を見てみましょう