渡された文字列が空かどうか判定して空の時は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.toIntdef 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] = Nonescala> toOption("2011-07-30T12:34:56+0900", convertDate _)res3: Option[java.util.Date] = Some(Sat Jul 30 12:34:56 JST 2011)