jil*_*len 3 scala pattern-matching extractor
object NoSense {
def main(args: Array[String]) {
val value = "true" match {
case value @ (IntValue(_) | BooleanValue(_)) => value
}
require(value == true)
}
}
class Value[T](val regex: Regex, convent: String => T) {
def unapply(value: String): Option[T] = value match {
case regex(value, _*) => Some(convent(value))
case _ => None
}
}
object IntValue extends Value[Int]("[0-9]+".r, _.toInt)
object BooleanValue extends Value[Boolean]("((true)|(false))".r, _.toBoolean)
Run Code Online (Sandbox Code Playgroud)
该require在main方法将失败.
但是这个还可以
def main(args: Array[String]) {
val value = "true" match {
case IntValue(value) => value
case BooleanValue(value) => value
}
require(value == true)
}
Run Code Online (Sandbox Code Playgroud)
这是scala语言本身的限制还是我做错了
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |