在下面的代码中是否有内联方式返回第一个值或None?对期权的处理似乎比预期的更加冗长。
def findBySqlName(sqlName : String) = {
map.iterator.find{ case (cname, col) =>
col.sqlName == sqlName
}.someThingInlineHereThatReturnsTheFirstValueOrNoneIfEmpty
}
答案 0 :(得分:3)
只是map.find?
val map = Map(1 -> "a", 2 -> "b")
def findByValue(v: String) = map.find(_._2 == v)
println(findByValue("a"))
println(findByValue("c"))
在你的情况下获得价值:
def findBySqlName(sqlName : String) = {
map.iterator.find{ case (cname, col) =>
col.sqlName == sqlName
}.map(_._2)
}
答案 1 :(得分:1)
我知道您已经接受了答案,但您可以使用collectFirst
一步完成find
和map
:
def findBySqlName(sqlName : String) = {
map.collectFirst({ case (cname, col) if (col.sqlName == sqlName) => col._2 })
}