【发布时间】:2015-06-14 10:03:26
【问题描述】:
我注意到我可以使用抽象类型成员实例化 scala 特征。下面的代码编译。但是 t.B 是什么?
trait A {
type B
}
val t = new A {}
【问题讨论】:
-
你不能实例化一个特征。
-
@I.K.当然,如果您为所有抽象方法和值提供定义,则可以。这里 A 没有 def 和 vals,所以你不必提供任何东西。它只是工作。
-
你不能实例化一个特征。这段代码的作用是实例化一个扩展特征的匿名子类。
-
我知道我正在使用匿名类扩展该特征。我正在实例化匿名类而不是特征。很抱歉,我的问题跳过了一点。 @Kolmar,这是否意味着如果 B 没有在 A 中的任何地方使用,那么我不需要为它提供具体类型?
-
@intangible02,特征“A”中的“B”只是一个类型参数。您可以使用来指定 A 中其他成员的类型,而无需指定该类型的真正含义。你想在这里达到什么目的?如果我们知道,也许我们可以提供进一步的帮助。
标签: scala abstract-type