我知道我可以在regex上使用如下捕获进行模式匹配:
val re = """a(\d)""".r
"a5" match {
case re(x) => println(x)
case _ => println("Oops")
}
5
我想知道是否有可能有这个正则表达式内联。对于下面的代码,我得到一个错误:
"a5" match {
case """a(\d)""".r(x) => println(x)
case _ => println("Oops")
}
case """a(\d)""".r(x) => println(x)
^
On line 2: error: '=>' expected but '.' found.
1条答案
按热度按时间lyfkaqu11#
一个简短(可能很难看)的方法可以使它看起来像一个内联调用,如下所示:
因此,您可以创建Regex示例,以后可以直接调用
unapplySeq
,而不是使用模式匹配。unapplySeq
返回Option[List[String]]
,因此您最终可以在那里处理Option示例。或者您可以将其设置得更短,例如: