我面對隱式參數和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