我有一个Seq
元素Tuple3
。我想要一个由每个元组的第二个元素组成的结果集合(可能是 a Set
) 。
例如
(a, b, c), (d, e, f), (g, h, i) ==> (b, e, h)
任何的想法?我搜索了很多,但我发现的所有内容都与过滤元组有关,而不是在它们内部,如果这有任何意义的话。
我对 Scala 还是很陌生,学习是一个漫长的过程 :) 感谢您的帮助。
根据您对所需内容的描述,这是 type 的某些功能Seq[(A, B, C)] => Set[B]
,您需要映射,而不是过滤。例如,
scala> Seq(('a', "foo", 1), ('b', "bar", 2)).map(_._2).toSet
res0: scala.collection.immutable.Set[java.lang.String] = Set(foo, bar)
如果您不喜欢笨拙的元组访问器(_1、_2 等),可以在其中使用模式匹配的“部分函数文字”:
scala> Seq(('a', "foo", 1), ('b', "bar", 2)) map { case (_, x, _) => x } toSet
res1: scala.collection.immutable.Set[java.lang.String] = Set(foo, bar)
yourSeqOfTuples.map(tuple => tuple._2).toSet
, 可以缩短为yourSeqOfTuples.map(_._2).toSet
如果您愿意,可以使用 {} 而不是 ()。
_2
是获取元组第二个元素的方法。