我有这样的PartialFunction:
val expectNumber: PartialFunction[Int, Int] = {
case i if isNumberChar(chars(i)) =>
var j = i
while (j < max && isNumberChar(chars(j)))
j += 1
tokenspace.add(JsonToken(Number, i, j))
j
}
我想在此PF中访问一个隐式值,例如:
val expectNumber: PartialFunction[Int, Int] = {
case i if isNumberChar(chars(i)) =>
val thing = implicitly[String]
var j = i
while (j < max && isNumberChar(chars(j)))
j += 1
tokenspace.add(JsonToken(Number, i, j))
j
}
或通过任何其他隐式传递方法。上面的代码发出一个编译错误,指出找不到隐式。我不熟悉如何将(if?)隐式参数传递给PartialFunction。
我想做的是可能的吗?
答案 0 :(得分:2)
是的,您可以将expectNumber
设为def
并通过它传递隐式
def expectNumber(implicit ev: String): PartialFunction[Int, Int] = {
case i if isNumberChar(chars(i)) =>
val thing = implicitly[String]
var j = i
while (j < max && isNumberChar(chars(j)))
j += 1
tokenspace.add(JsonToken(Number, i, j))
j
}