您將如何實現通過正則表達式解析某些輸入並將已創建的字符串轉換爲其他類型的類?我的做法是:具有通用返回類型的可選函數參數
class ARegex[T](regex:Regex, reform:Option[String => T]){
def findFirst(input:String):Option[T] = {
(regex.findFirstIn(input), reform) match{
case (None, _) => None
case (Some(s), None) => Some(s) // this won't compile because of type mismatch
case (Some(s), Some(fun)) => Some(fun(s))
}
}
}
class BRegex[T](regex:Regex, reform:Option[String => T]) {
def findFirst(input:String) = { //returns Option[Any] - erasure
(regex.findFirstIn(input), reform) match{
case (None, _) => None
case (Some(s), None) => Some(s)
case (Some(s), Some(fun)) => Some(fun(s))
}
}
}
'T'可以是任何東西。 「T」和「String」的唯一常見超類型是「Any」。如果您有時想返回'Some [String]'和其他時間'Some [T]'(或'None'),那麼'Option [Any]'可以說'findFirst'的返回類型。 – 2010-07-13 15:38:09
爲了開心看看:http://github.com/league/scala-type-anxiety/blob/master/src/RegexMatchCPS.scala – oluies 2010-07-13 22:02:37