Scala的理解力 - 解决null问题

时间:2015-05-08 13:10:46

标签: scala

在下面的代码段中:

 for {
  strVal  <- str
  longVal <- str.strToLong
 } yield longVal

其中str是Option [String]。如果str以some(null)的形式出现怎么办?如何理解我的理解?

2 个答案:

答案 0 :(得分:1)

我认为您正在处理Some(null),因为您在代码中使用了该构造函数。 试试Option(variableWithNull),结果将是None。然后None的所有操作都会产生None的结果,而不是烦人的java.lang.NullPointerException

也许您可以使用此代码:

val str: Option[String] = Option(null)
str.fold(0L) {_.toLong}

答案 1 :(得分:0)

Some(null)应该是上游代码出错的指标。通常,当包装可能在Option类型中返回null的内容时,应使用Option apply,因为Option(null)评估为None

如果您无法影响它,您可以flatMap始终None

str.flatMap(Option(_))