2017-06-06 4 views
2

J'essaie de trouver la syntaxe Scala correspondant à ce code java. Supposons que A est une classe a une méthode sayHi.Syntaxe Scala pour objet anonyme

new A().sayHi() serait parfaitement compilable selon la syntaxe java valide. D'autre part, quand j'ai essayé new A.sayHi() il ne compile pas dans Scala. Quelle syntaxe avons-nous dans Scala pour cela?

Répondre

4

En Scala, on peut utiliser une des opérations suivantes:

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

Sans parenthèses et quand il est précédé par new, A.sayHi serait interprété comme un type et new A.sayHi() serait alors une instanciation du type de classe A.sayHi. Si A.sayHi n'est pas un type de classe qui entraînerait une erreur de compilation.

Jetez un oeil:

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