私はSeq
のTuple3
要素を持っています。各タプルの2 番目の要素で構成された結果のコレクション (おそらく 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
タプルの2番目の要素を取得するメソッドです。