【发布时间】:2010-12-26 13:32:30
【问题描述】:
我仍然是 Scala 菜鸟,这让我很困惑:
import java.util.regex._
object NumberMatcher {
def apply(x:String):Boolean = {
val pat = Pattern.compile("\\d+")
val matcher = pat.matcher(x)
return matcher.find
}
def unapply(x:String):Option[String] = {
val pat = Pattern.compile("\\d+")
val matcher = pat.matcher(x)
if(matcher.find) {
return Some(matcher.group())
}
None
}
}
object x {
def main(args : Array[String]) : Unit = {
val strings = List("geo12","neo493","leo")
for(val string <- strings) {
string match {
case NumberMatcher(group) => println(group)
case _ => println ("no")
}
}
}
}
我想为包含数字的字符串添加模式匹配(这样我可以了解更多关于模式匹配的知识),在unapply 中我决定返回Option[String]。但是,在 NumberMatcher 情况下的 println 中,group 被视为字符串,而不是Option。你能解释一下吗?运行时产生的输出是:
12,493,no
【问题讨论】:
标签: scala functional-programming language-features pattern-matching