在Scala中,我需要根据从另一个地图获得的密钥调用从地图中获取对象。 ' Java'它会是:
map1.get(map2.get(topic).get) // Could throw java.util.NoSuchElementException
但这并不像Scala那样。 Scala的做法是什么?
答案 0 :(得分:6)
使用for-comprehension。
for {
m2 <- map2.get(topic)
m1 <- map1.get(m2)
} yield {
m1
}
这令人厌恶:
map2.get(topic).flatMap(map1.get)
答案 1 :(得分:0)
如果两个查找都失败了,您就不在乎可以使用Option.flatMap
:
map2.get(topic).flatMap(m1.get(_))