我正在尝试找到与此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
关于java - 匿名对象的 Scala 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385734/