scala - 元组在 map 内解包

标签 scala

我想在 map 中解压元组以访问一些值。

在Python中我会这样做:

>>> [topic for topic, partition in [('x', 1), ('y', 2)]]
['x', 'y']

这里元组('x', 1), ('y', 2)被解包到topic,partition中,然后我访问topic.

在 Scala 中我只能做到这样:

List(('x', 1), ('y', 2)).map(_._1)

但我希望将显式解包为元组作为中间步骤(即使它会带来一些开销),因为我认为这会使代码更具可读性。

我想实现类似的目标

List(('x', 1), ('y', 2)).map((topic, partition) => topic)

不幸的是它不起作用:

> <console>:9: error: wrong number of parameters; expected = 1
                List(('x', 1), ('y', 2)).map((topic, partition) => topic)

其他尝试(例如 List(('x', 1), ('y', 2)).map(Tuple2(topic,partition) => topic))也失败了。

有什么方法可以实现与我在 Python 中实现的类似的功能吗?

最佳答案

你在找这个吗?

List(('x', 1), ('y', 2)).map {
  case (topic, partition) => topic
}

编辑:还有一种方法可以做到同样的事情,正如@senia建议的:

for { 
  (topic, partition) <- List(('x', 1), ('y', 2)) 
} yield topic

关于scala - 元组在 map 内解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776796/

相关文章:

抽象函数中的 Scala 泛型

java - 如何向 ShardRegion 中的所有 Actor 发送消息

scala - 已超过 Websocket 最大帧长度 65536

scala - 使用 scala.io.Source 的正确方法是什么?

scala - 我无法理解 Scala Spark 中的 'RDD.map{ case (A, B) => A } '

scala - SBT Native Packager - 如何检索库依赖项并将其存储为包的一部分?

循环引用特征的 Scala 类型错误

Scala - 比较两个选项[Seq[String]]

javascript - Javascript 中 Scala 的 "for comprehension"

java - 如何让 "run"按钮自动启动指定配置的项目