创建scala特征的新实例

时间:2017-07-21 15:49:54

标签: scala traits

请在Scala中解释一下。

如果我有

 trait A

我无法做到

val a = new A

但是这个例子特征,

 trait DS[-In, +Out]{def apply(i: In): Out}

可以有

的实例
val t1 = new DS[Any, Int]{def apply(i: Any) = i.toString.toInt}

这是如何允许的?

2 个答案:

答案 0 :(得分:5)

正在发生的事情是,通过提供一个类体,您正在创建一个扩展该特征的匿名类内联。

答案 1 :(得分:4)

使用类主体{}可以正常工作。

val a = new A {}