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)
メソッドのrequire
はmain
失敗します。
しかし、これは大丈夫です
def main(args: Array[String]) {
val value = "true" match {
case IntValue(value) => value
case BooleanValue(value) => value
}
require(value == true)
}
それはscala言語自体の制限ですか、それとも私のやり方が間違っていますか