3

私はSeqTuple3要素を持っています。各タプルの2 番目の要素で構成された結果のコレクション (おそらく a Set) が必要です。

例えば

(a, b, c), (d, e, f), (g, h, i) ==> (b, e, h)

何か案が?私はたくさん検索しましたが、私が見つけたのは、タプル内ではなく、タプルのフィルタリングに関係しています。

私はまだ Scala にまったく慣れていません。学習は長いプロセスです :) 助けてくれてありがとう。

4

3 に答える 3

6

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)
于 2012-05-15T12:43:22.517 に答える
4

不器用なタプル アクセサー (_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)
于 2012-05-15T13:09:46.020 に答える
3

yourSeqOfTuples.map(tuple => tuple._2).toSetに短縮される場合がありますyourSeqOfTuples.map(_._2).toSet

必要に応じて、() ではなく {} を使用することもできます。 _2タプルの2番目の要素を取得するメソッドです。

于 2012-05-15T12:42:51.040 に答える