斯卡拉:"就地"特质继承没有"新"关键词

时间:2014-09-24 12:41:49

标签: scala

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

" T.scala"文件

trait T

" A.scala"文件

class A

object A {
  def apply() = new A()
}

" other.scala"文件

val a = new A() with T  // ok
val b = A() with T  // syntax error ';' or newline expected

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

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

1 个答案:

答案 0 :(得分:6)

A()转换为A.apply(),这是一种返回新对象的方法,与new A()不同。

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

val b = A.apply()
val c = b with T

您无法在已创建的对象上使用with