タプルのリストにmap()を使用する際の詳細な表記 質問する

タプルのリストにmap()を使用する際の詳細な表記 質問する

私は自分のコードを非常に素朴に読みやすいものにしたいと思っています。

単純なタプルのリストを設定する場合:

scala> val a = List(6, 8, 10)
a: List[Int] = List(6, 8, 10)

scala> val b = a zipWithIndex
b: List[(Int, Int)] = List((6,0), (8,1), (10,2))

リストに map() を実行したいのですが、._1 ._2 構文が少し読みにくいと思います。

scala> val c = b map ( a => if(a._1 > 8) a._1 else a._2 )           
c: List[Int] = List(0, 1, 10)

タプルに「名前を付ける」ために、以下を使用しました:

scala> val c = b map ( { case (num, i) => if(num > 8) num else i } )
c: List[Int] = List(0, 1, 10)

2つの質問:

1) タプルのメンバーに名前を付けるより簡潔な方法はありますか?

2) 上記のバージョンではパフォーマンスにかなりの影響がありますか (パフォーマンスが中程度に重要なコードで使用されています)。

ありがとう。

ベストアンサー1

b map Function.tupled((num, i) => if(num > 8) num else i)

パターン マッチングと for 式を回避するので、パフォーマンスは十分に高くなるはずです。caseただし、通常は、あなたと同じように使用します。

おすすめ記事