我試圖創建一個用於模式匹配的unapply
方法,並且我試圖讓它返回與Option
不同的東西,但是,Eclipse將該錯誤顯示爲錯誤。 unapply
是否必須返回Option[T]
?這是一個規則,不適用總是會返回一個選項?
編輯:這是我正在嘗試使用的代碼。我交換代碼從上一節,以便unapply
返回一個布爾
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):Boolean = {
val pat = Pattern.compile("\\d+")
val matcher = pat.matcher(x)
return matcher.find
}
}
object x {
def main(args : Array[String]) : Unit = {
val strings = List("geo12","neo493","leo")
for(val str <- strings) {
str match {
case NumberMatcher(group) => println(group)
case _ => println ("no")
}
}
}
}
的Eclipse說wrong number of arguments for object NumberMatcher
。這是爲什麼?
你能告訴我,我應該爲了修改爲不應用該返回一個布爾值工作? – Geo 2009-12-14 21:36:58
返回布爾值時不能提取參數。這只是'NumberMatcher()=> ...'的情況。 – Dario 2009-12-15 10:58:26
我很驚訝,Option [Unit]不起作用。 – 2012-09-15 17:46:38