渡された文字列が空かどうか判定して空の時は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)