【问题标题】:How to handle null values when a method doesn't return an Option? [duplicate]当方法不返回选项时如何处理空值? [复制]
【发布时间】:2019-12-02 15:59:14
【问题描述】:

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

Java我通常是这样写的:

String metric_1 = null;
String metric_2 = null;

if (myObject.getField() != null) {
    metric_1 = myObject.getField();
} else {
    metric_2 = generateMetric();
}

【问题讨论】:

  • 另请注意,使用 ; 在 Scala 代码风格中不是惯用的(通常没用)
  • @cchantep 我提供的代码示例是 Java 代码,因此 ;

标签: java scala null


【解决方案1】:

可以是 null 的值,您可以用 Option 包装,例如:

val isNull = null
val isNotNull = "hello"

println(Option(isNull)) // None

println(Option(isNotNull)) // Some(hello)

查看这篇文章:NO NULL VALUES

您的示例可能如下所示:

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

【讨论】:

  • 是的,我知道可以将值包装到 Option 中。但是对于我上面的例子,它会是什么样子?
  • 谢谢!我也试过这个:val metric_1 = Option(myObject.getField()) val result = metric_1 match { case Some(metric) => metric case None => generateMetric() } 但是你使用getOrElse 的方法看起来更好
猜你喜欢
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2018-09-26
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多