当方法不返回选项时如何处理空值?

sam*_*mba 2 java null scala

在 Scala 中使用空值处理以下情况的正确方法是什么?该getField()generateMetric()方法返回一个字符串。如果它返回一个 Option 我可能可以在这里应用模式匹配。

Java我通常是这样制作的:

String metric_1 = null;
String metric_2 = null;

if (myObject.getField() != null) {
    metric_1 = myObject.getField();
} else {
    metric_2 = generateMetric();
}
Run Code Online (Sandbox Code Playgroud)

pme*_*pme 5

可以null包含在 中的值Option,例如:

val isNull = null
val isNotNull = "hello"

println(Option(isNull)) // None

println(Option(isNotNull)) // Some(hello)
Run Code Online (Sandbox Code Playgroud)

查看这篇文章:NO NULL VALUES

您的示例可能如下所示:

val metric = 
  Option(myObject.getField()).getOrElse(generateMetric())
Run Code Online (Sandbox Code Playgroud)
  1. 包装可以返回的方法null
  2. 如果有值则返回它,如果有则生成度量null