Groovy语言有?处理NullPointer异常的语法,scala中有类似的东西吗?

rjc*_*rjc 2 java groovy scala

假设我有来自查询字符串请求参数的String参数.如您所知,参数可能丢失或可能存在,但值为空字符串.在groovy语言中,我可以简单地做一些事情

  List lst = words?.split(',') 
Run Code Online (Sandbox Code Playgroud)

如果单词为null,则lst将为null而不是抛出NPE

scala中的类似快捷方式是什么?

Option [String]在这里不是一个选项,因为它是来自查询字符串的单词是String类型.

Dan*_*ral 14

如果你想保持空值,

val lst = Option(words).map(_ split ',').orNull
Run Code Online (Sandbox Code Playgroud)

但你应该做的是摆脱空值.如果某些API(Java,很可能)可以返回a null,请将其调用包装起来Option(),以获得正确的Option.如果需要传递一些API null,请传递一个option.orNull.

在你自己的代码中,不要让任何东西null.


ove*_*ink 8

我还会Option在这里使用.您可以轻松地将潜在的null变量转换为Option使用该Option对象的变量.例如

scala> def splitter(s: String) = Option(s) map { _.split(',') }
splitter: (s: String)Option[Array[String]]

scala> splitter("Here, are, some, strings, man.")
res50: Option[Array[String]] = Some([Ljava.lang.String;@7f4613f1)

scala> splitter(null)
res51: Option[Array[String]] = None
Run Code Online (Sandbox Code Playgroud)