5.25.2015

Scala: Converting Tuple to Function Parameter using FunctionN#tupled

Scala: tupled メソッドを使ってタプルを関数の引数として渡す

 

タプルを直接関数のパラメータとして受け渡したい場合には、Function2, Function3, ... トレイトの tupled を使うと便利。

scala> def f(x: Int, y: Int, z: Int): Int = x + y + z
f: (x: Int, y: Int, z: Int)Int

scala> (f _).tupled((10, 20, 30))
res0: Int = 60

特に Case Class の組み立てに役立つ。

scala> case class C(x: Int, y: Int, z: Int)
defined class C

scala> Seq((1, 2, 3), (4, 5, 6), (7, 8, 9)).map(C.tupled)
res1: Seq[C] = List(C(1,2,3), C(4,5,6), C(7,8,9))

同様に、curried メソッドも備わっている。

scala> (f _).curried(10)(20)(30)
res2: Int = 60

0 件のコメント:

コメントを投稿