Scala regex + partial function unapply 性能

Scala regex + partial function unapply performance

假设我有这样的代码:

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

pf 有方法 isDefinedAtapply。正则表达式搜索会在 isDefinedAt 点评估一次,还是会完成两次?

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

正则表达式将计算一次。这项工作是在提取器 Regex.unapplySeq 中完成的。提取器的 return 类型是 Option[List[String]] 所以它知道正则表达式是否匹配(SomeNone)和捕获的组(List[String])所有一捆。