gpt4 book ai didi

scala - 映射选项中的键/值[映射]

转载 作者:行者123 更新时间:2023-12-02 15:26:37 24 4
gpt4 key购买 nike

我正在尝试从 Option[Map] 中提取键/值。仅当 Option 实际上有一个 Map 时,迭代 Map 中包含的键/值的最简单方法是什么?

这是一个突出我的问题的简单示例。

val values = Option(Map("foo" -> 22, "bar" -> 23))
values map { case (key, value) => println(s"$key = $value") }

编译失败。

 <console>:12: error: constructor cannot be instantiated to expected type;
found : (T1, T2)
required: scala.collection.immutable.Map[String,Int]
values map { case (key, value) => println(s"$key = $value") }
^

如果 Map 没有包含在 Option 中,那么它工作得很好。

val values = Map("foo" -> 22, "bar" -> 23)
values map { case (key, value) => println(s"$key = $value") }

最佳答案

您需要另一个 map,因为第一个 map 用于 Option,这意味着您的 lambda 正试图匹配单个键-值对,当它确实是包含在 Option 中的完整 Map 时。

values.map(a => ???)
^ This is a Map[String, Int]

在句法上,你想要这样:

values.map(_.map { case (key, value) => println(s"$key = $value") })

但这并不是真正意义上的 map,它更像是 foreach,因为它只会产生副作用。

values.foreach(_.foreach { case (key, value) => println(s"$key = $value") })

或者用 for-comprehension:

for {
map <- values
(key, value) <- map
} println(s"$key = $value")

关于scala - 映射选项中的键/值[映射],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30086922/

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