0
我怎么会做类似下面的(这显然是一个愚蠢的例子,但它足以说明我的问题):把隐含参数为范围从案例类体中
trait GetString[T, U] {
def toString(u: U): String = u.toString
final def getString(t: T)(implicit f: (T) => U) = toString(f(t))
}
case class MapBoolGetString(name: String) extends GetString[Map[String, String], Boolean] {
/* This does not work */
implicit val map2bool = (m: Map[String, String]) => m.contains(name)
}
class Main {
val test = MapBoolGetString("key")
test.getString(Map("key" -> "value"))
}
这将导致错误:
No implicit view available from Map[String,String] => Boolean.
这显然是一个范围问题;隐含的map2bool
不在范围内,因此,getString
失败。
有没有一种方法,我可以以某种方式将其纳入范围?我把它放在MapBoolGetString
的原因是因为我希望它依靠name
参数给map2bool
内的构造函数。
有什么办法,你能想到的W/O需要一个明确的import语句来实现这一目标?如果它是某个MapBoolGetString实例化的一部分,我会很喜欢。 – user451151
@ user451151请参阅编辑。 –