首页 > 解决方案 > 在 Scala 中,需要将可能为 null 的值与可能为“null”的搜索字符串进行比较

问题描述

我对 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”。

有什么建议么?

标签: scala

解决方案


你的解决方案不错。

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

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.
  }

推荐阅读