Я все еще новичок в 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]
. Однако в println в случае NumberMatcher group
рассматривается как строка, а не как Option
. Можете ли вы пролить свет? Результат, полученный при запуске:
12,493,no