2014-09-25 102 views

回答

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

我知道你已經接受了答案,但你可以使用collectFirstfindmap一步到位:

def findBySqlName(sqlName : String) = { 
    map.collectFirst({ case (cname, col) if (col.sqlName == sqlName) => col._2 }) 
} 
+0

是的,我喜歡這個,將添加到工具箱。 – javadba 2014-09-25 16:18:14