質問: results(i - 1) if (data.exists(_._1 != m._1)) { data :+= results(i - 1) } } } ``` 上記のようなコードを記載したいのですが、実行されるとIf判定時、dataが入っておらず、 想定した動作となりません。 大変、お手数をおかけしますが、ご教授お願いいたします。
回答: コードになぜ_1=="10"というリテラルとの比較があるのかわかりませんが、それを気にしないことにしてtupleの_1をキーとしてその値が同一のもののうち、任意の一つを選べばよいというのであれば例えば以下でいかがでしょうか。 `val result = data.groupBy(_._1).map(_._2.head)` scalaについてはそれほど経験がないので間違い、あるいはもっとよい書き方があるなど不備ありましたらご容赦ください。 追記: 上に「_1をキーとしてその値が同一のもののうち、任意の一つ」と書きましたが実際やってみると同一キーを持つ最初の要素が結果に採用されました。自分にはgroupByで生成されるリストが元のSeqの出現順に並ぶことが保証されているかどうかわかりませんでした。Seq#groupByのリファレンスをみても結果のListの順番については何もいってないように見えるので順番を仮定しないほうがいいのかな?