检查toInt或toBoolean的优雅方式

时间:2014-07-24 21:16:04

标签: scala

我有一堆字段,我用XML解析,需要根据字段将它们转换为IntBoolean类型。问题是在某些XML文件中,此标记可能不存在。当我尝试将空String转换为BooleanInt时,这会自然引发运行时错误。我是Scala的新手,有没有办法使用Option类来做得更好?

这就是没有处理的代码。 parentNode始终存在,但子节点或字段可能不存在。

(parentNode / childNote / field).text.toBoolean

1 个答案:

答案 0 :(得分:5)

您可以使用scala.util.Try。如果Try - 块内的代码成功,它将产生Success(result)。否则返回Failure(exception)

Try((parentNode / childNote / field).text.toBoolean)

从这里你有几个选择来处理它。我假设,在该字段不存在的情况下,您有一个默认值。

1如果失败并不重要,您可以直接使用getOrElse,在失败的情况下,将使用默认值。

Try((parentNode / childNote / field).text.toBoolean).getOrElse(defaultvalue)

2模式匹配

只有在有多个方法调用和/或异常处理时才应该使用它。

Try((parentNode / childNote / field).text.toBoolean) match {
  case Success(bool) => {
    //calculations
  }
  case Failure(ex) => {
    //do something with the exception
  }
}