是否可以将隐式传递给PartialFunction?

时间:2019-02-06 18:13:34

标签: scala

我有这样的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。

我想做的是可能的吗?

1 个答案:

答案 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
  }