文字列に適当な変換を行なってOptionへ格納する。

渡された文字列が空かどうか判定して空の時はNone、そうでないときは文字列に適した変換処理を行なってSomeへ格納する処理。

渡された文字列が空かどうか判定して空の時はNone、そうでないときは文字列に適した変換処理を行なってSomeへ格納する処理。

  • タグ:
  • タグはありません
import java.text.{SimpleDateFormat => SDF}
val sdf = new SDF("yyyy-MM-dd'T'HH:mm:ssZ")
def convertInt(x: String) = x.toInt
def convertDate(x: String) = sdf.parse(x)
def toOption[T](x: String, converter: String => T = (str: String) => str) = {
try {
x match { case "" => None; case other => Some(converter(other)) }
} catch {
case e: Exception => None
}
}
// 使
scala> toOption("aaa")
res0: Option[String] = Some(aaa)
scala> toOption("123", convertInt _)
res1: Option[Int] = Some(123)
scala> toOption("2011-07-30 12:34:56", convertDate _)
res2: Option[java.util.Date] = None
scala> toOption("2011-07-30T12:34:56+0900", convertDate _)
res3: Option[java.util.Date] = Some(Sat Jul 30 12:34:56 JST 2011)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX