gpt4 book ai didi

scala - 在 Scala 中获取嵌套映射的值

转载 作者:行者123 更新时间:2023-12-01 10:08:32 24 4
gpt4 key购买 nike

我有一个具有以下结构的 map :

Map[String, Map[String, String]]

是否有一种优雅的方式来获取内部 map 的值(value)?

最佳答案

按正常方式做...两次。

val m = Map("a" -> Map("b" -> "c"))
m("a")("b") // c

第一个操作m("a")返回内部Map[String,String]。第二个操作 that("b") 返回返回的 Map 中的字符串。

这等同于:

val m = Map("a" -> Map("b" -> "c"))
val m2 = m("a") // Map(b -> c)
m2("b") // c

另一方面,如果您认为它们的键可能不存在,那么请执行以下操作:

for {
x <- m.get("a") // x = Map(b -> c)
y <- x.get("b") // y = c
} yield y
// Some(c)

for {
x <- m.get("a") // x = Map(b -> c)
y <- x.get("d") // fails
} yield y
// None

for {
x <- m.get("c") // fails
y <- x.get("d") // doesn't run
} yield y
// None

对于你的例子,key2是一个Option,就像m.get(key1)一样,所以你可以用同样的方式处理它:

val key1: String = "a"
val key2: Option[String] = Some("b")
for {
value1 <- m.get(key1)
k2 <- key2
value2 <- value1.get(k2)
} yield value2
// Some(c)

关于scala - 在 Scala 中获取嵌套映射的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28998429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com