我对 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”。
有什么建议吗?
最佳答案
你的解决方案不错。
这是一种不同的方法,但仅当两个条件的处理方式存在显着差异时才有用。
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.
}
关于scala - 在 Scala 中,需要将可能为空的值与可能为 "null"的搜索字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109467/