我想在 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/