在Scala中,需要将可能为null的值与可能为“null”的搜索字符串进行比较

时间:2018-04-30 23:21:28

标签: scala

我对Scala比较陌生,想要找到一种更清晰的方法:

我目前有一些功能:

def someFunction(someSearchString: String, someSet: Set[SomeType]): Set[Blah] = 
   someSet.collect {
      case SomeItem(x, y, z) 
         if z.getOrElse("null") == someSearchString => // etc.

这很有效,但在我看来,由于我们在这个类中存在类似的基础,因此我们在整个课程中都有类似的东西,所以我们必须继续这样做.getOrElse("null")。如果someSearchString为“null”且未定义z,则应将其视为匹配项。遗憾的是,我们无法将someSearchString更改为null而不是“null”。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

你的解决方案并不错。

这是一种不同的方法,但只有在两种条件的处理方式存在显着差异时才有用。

def someFunction(someSearchString: String, someSet: Set[SomeType]): Set[Blah] = 
  someSet.collect {
    case SomeItem(x, y, Some(`someSearchString`)) => // etc.
    case SomeItem(x, y, None)
      if someSearchString == "null" => // etc.
  }