文字列に適当な変換を行なって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)