Предполагается, что приведенная ниже функция принимает value
типа String
и возвращает Option
, который соответствует типу второго аргумента функции, например,
toOption[Double]("10", classOf[Double])
def toOption[A](value: String, classType: A): Option[A] = {
classType match {
case _: Int => {
try {
Some(value.trim().toInt)
} catch {
case e: NumberFormatException => None
}
}
case _: Double => {
try {
Some(value.trim().toDouble)
} catch {
case e: NumberFormatException => None
}
}
case _: java.sql.Timestamp => {
try {
Some(java.sql.Timestamp.valueOf(value.trim()))
} catch {
case e: NumberFormatException => None
}
}
case _ => None
}
}
Однако, поскольку функция в настоящее время есть, я получаю ошибки ниже. Как я могу / должен устранить эти ошибки?
<console>:15: error: type mismatch;
found : Int
required: A
Some(value.trim().toInt)
^
<console>:22: error: type mismatch;
found : Double
required: A
Some(value.trim().toDouble)
^
<console>:29: error: type mismatch;
found : java.sql.Timestamp
required: A
Some(java.sql.Timestamp.valueOf(value.trim()))