【发布时间】:2019-08-11 14:52:20
【问题描述】:
知道为什么我不能在不提供类主体的情况下创建单个特征的实例:
trait MyTrait
val test1 = new MyTrait // Does not compile.
val test2 = new MyTrait {} // Compiles.
但如果我再添加一个实例,我将能够创建一个实例:
trait MyTrait
trait SecondTrait
val anotherTest = new SecondTrait with MyTrait // Compiles successfully.
我会期待同样的行为。
旁注:我已经阅读过this question。但是特征体的存在并不能回答我的问题,因为第二个例子仍然没有身体。那么,为什么编译器会认为第二个例子是匿名类呢?
【问题讨论】:
-
我猜,如果你给
MyTrait一个实际的代码体,那么你就不会再有这个问题了。 -
编辑您的问题以包含完整的特征。
-
@RobertHarvey,代码还可以,您的教程并未声称涵盖所有 scala 功能
-
第二个有效......这就是问题所在,第二个如何有效(假设您仍然保留第一个特征定义)
-
哇,这里有很多cmets...不管怎样,看看users.scala-lang.org/t/instantiation-of-traits/3505/4
标签: scala