2
我试图找到对应于此Java代码的Scala语法。假设A是一个类a有一个方法sayHi。匿名对象的Scala语法
new A().sayHi()
将根据有效的java语法完美编译。另一方面,当我尝试new A.sayHi()
它不在Scala中编译。我们在Scala中有什么语法呢?
我试图找到对应于此Java代码的Scala语法。假设A是一个类a有一个方法sayHi。匿名对象的Scala语法
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