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
有方法 isDefinedAt
和 apply
。正则表达式搜索会在 isDefinedAt
点评估一次,还是会完成两次?
如果一次,args g1, g2
如何传递给 apply
方法?
正则表达式将计算一次。这项工作是在提取器 Regex.unapplySeq
中完成的。提取器的 return 类型是 Option[List[String]]
所以它知道正则表达式是否匹配(Some
或 None
)和捕获的组(List[String]
)所有一捆。
假设我有这样的代码:
val pf: PartialFunction[String, Unit] =
"string" match { case regex(g1, g2, _*) =>
function(g1, g2)
}
pf
有方法 isDefinedAt
和 apply
。正则表达式搜索会在 isDefinedAt
点评估一次,还是会完成两次?
如果一次,args g1, g2
如何传递给 apply
方法?
正则表达式将计算一次。这项工作是在提取器 Regex.unapplySeq
中完成的。提取器的 return 类型是 Option[List[String]]
所以它知道正则表达式是否匹配(Some
或 None
)和捕获的组(List[String]
)所有一捆。