可以新的'关键字用于特质?

时间:2015-05-08 15:53:57

标签: scala

例如:implicit val IntOrd = new Ord [Int ] {...}

如果Ord是特质,这段代码是否合法?我在一个关于OO类和类型类之间差异的文档中看到了这一点。

1 个答案:

答案 0 :(得分:5)

是。您可以在REPL中轻松测试:

scala> trait Ord
defined trait Ord

scala> val x = new Ord {}
x: Ord = $anon$1@32a933c3

这是可能的,因为使用new Ord {}您不是创建特征的实例,而是创建特征的anonymous subclass的实例。 (链接的解释适用于Java,但它在Scala中的工作方式相同)。