在scala中嵌套地图获取调用的最简洁方法是什么

时间:2015-10-15 21:45:45

标签: scala

在Scala中,我需要根据从另一个地图获得的密钥调用从地图中获取对象。 ' Java'它会是:

map1.get(map2.get(topic).get) // Could throw java.util.NoSuchElementException

但这并不像Scala那样。 Scala的做法是什么?

2 个答案:

答案 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(_))