personFromParams
関数が を返すのはなぜNone
ですか?
def personFromParams(p: Map[String, String]): Option[Person] =
for {
name <- p.get("name")
ageStr <- p.get("age")
age <- toInt(ageStr)
validStr <- p.get("valid")
valid <- toBool(validStr)
} yield { println("personFromParams()"); new Person(name, age, valid) }
def tryo[T](f: => T): Option[T] = try {Some(f)} catch {case _ => None}
def toInt(s: String): Option[Int] = tryo(s.toInt);
def toBool(s: String) = tryo(JBool.parseBoolean(s))
に数値以外の値を与えると、 forがtoInt
返されますが、関数 で例外がキャッチされて処理されるときにが中断する理由がわかりません。None
age
toInt
for
tryo