エクストラクタString
を使用してキャストしようとしています。Int
私のコードは次のようになります。
object Apply {
def unapply(s: String): Option[Int] = try {
Some(s.toInt)
} catch {
case _: java.lang.Exception => None
}
}
object App {
def toT[T](s: AnyRef): Option[T] = s match {
case v: T => Some(v)
case _ => None
}
def foo(param: String): Int = {
//reads a Map[String,String] m at runtime
toT[Int](m("offset")).getOrElse(0)
}
}
ランタイムエラーが発生します:java.lang.String cannot be cast to java.lang.Integer
。エクストラクタはまったく使用されていないようです。私は何をすべきか?
編集:私のユースケースは次のとおりです。playを使用していて、URLで渡されたクエリ文字列を解析したいと思います。クエリ文字列値(String)を取得して、Int、Doubleなどとして使用したいと思います。たとえば、
val offset = getQueryStringAs[Int]("offset").getOrElse(0)