Scala正则表达式+部分功能unapply性能

时间:2015-12-22 20:25:32

标签: regex scala partialfunction

假设我有一个代码:

val pf: PartialFunction[String, Unit] =
  "string" match { case regex(g1, g2, _*) =>
    function(g1, g2)
  }

pf包含方法isDefinedAtapply。是否会在isDefinedAt点评估正则表达式搜索,或者作业将进行两次?

如果一次,args g1, g2如何传递给apply方法?

1 个答案:

答案 0 :(得分:1)

正则表达式将被评估一次。工作在提取器Regex.unapplySeq中完成。提取器的返回类型为Option[List[String]],因此它知道正则表达式是否匹配(SomeNone)和捕获的组(List[String])全部在一个捆绑。