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

Eug*_*eMi 1 scala

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

map1.get(map2.get(topic).get) // Could throw java.util.NoSuchElementException
Run Code Online (Sandbox Code Playgroud)

但这看起来并不像Scala那样.Scala的做法是什么?

Rya*_*yan 6

使用for-understanding.

for {
  m2 <- map2.get(topic)
  m1 <- map1.get(m2)
} yield {
  m1
}
Run Code Online (Sandbox Code Playgroud)

这令人厌恶:

map2.get(topic).flatMap(map1.get)
Run Code Online (Sandbox Code Playgroud)