我面对隐式参数和tratis有趣的问题。如何将隐式类参数映射到特征变量?
我有一个抽象类Parent
接受一个整数和其他2个PARAMS隐含:所以现在
trait ClassTrait {
val str: String
val map: Map[String,String]
def doSth() = str.length
}
:
abstract class Parent(a: Int)(implicit str: String, map: Map[String,String]) {/*...*/}
和性状ClassTrait
将与Parent
混合,并使用implicits我想这样做(与关键字abstract
):
class Child(a: Int)(implicit str: String, map: Map[String,String]) extends Parent(a) with ClassTrait {
def doSth2 = doSth * 10
}
我应该用什么语法来将隐式参数映射到特征值?编译器返回此错误:
foo.scala:10: error: class Child needs to be abstract, since:
value map in trait ClassTrait of type Map[String,String] is not defined
value str in trait ClassTrait of type String is not defined
class Child(a: Int)(implicit str: String, map: Map[String,String]) extends Parent(a) with ClassTrait {
^
one error found
在复杂的例子中,我使用隐参数的特点,但由于特征不能有任何PARAMS(无构造函数),我需要再次声明所用implicits。
感谢您的帮助。
哇,非常感谢:) – petrbel 2014-09-13 11:29:53