我对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”。
有什么建议吗?
答案 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.
}