假设我有一个代码:
val pf: PartialFunction[String, Unit] =
"string" match { case regex(g1, g2, _*) =>
function(g1, g2)
}
pf
包含方法isDefinedAt
和apply
。是否会在isDefinedAt
点评估正则表达式搜索,或者作业将进行两次?
如果一次,args g1, g2
如何传递给apply
方法?
答案 0 :(得分:1)
正则表达式将被评估一次。工作在提取器Regex.unapplySeq
中完成。提取器的返回类型为Option[List[String]]
,因此它知道正则表达式是否匹配(Some
或None
)和捕获的组(List[String]
)全部在一个捆绑。