例如: implicit val IntOrd = new Ord [Int ] {...}
如果Ord是特质,此代码是否合法?我在有关OO类和类型类之间差异的文档中看到了这一点。
是。您可以在REPL中轻松进行测试:
scala> trait Ord
defined trait Ord
scala> val x = new Ord {}
x: Ord = $anon$1@32a933c3
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为使用new Ord {}您不是在创建特征的实例,而是在特征的匿名子类的实例。(链接的说明适用于Java,但在Scala中的作用相同)。