Scala:"就地"特性继承没有"新"关键字

she*_*heh 4 scala

我无法理解为什么在此代码中出现语法错误:

"T.scala"文件:

trait T
Run Code Online (Sandbox Code Playgroud)

"A.scala"文件:

class A

object A {
  def apply() = new A()
}
Run Code Online (Sandbox Code Playgroud)

"other.scala"文件:

val a = new A() with T  // ok
val b = A() with T  // syntax error ';' or newline expected
Run Code Online (Sandbox Code Playgroud)

我可以在不使用new关键字的情况下继承创建新的类实例吗?

我没有发现任何相关信息.

bwr*_*oga 6

A()转换为A.apply()返回新对象的方法,与之不同new A().

你基本上是在尝试这样做(这是行不通的):

val b = A.apply()
val c = b with T
Run Code Online (Sandbox Code Playgroud)

您不能with在已创建的对象上使用.