Scalaのadd(a: Int, b: Int)とadd(a: Int)(b: Int)の違い
(a: Int, b: Int)
の部分、引数リストって言うらしい。
Scalaメソッド定義メモ(Hishidama's Scala def Memo)
部分適用したいときはこうなる
add(a: Int, b: Int)
の場合
scala> def add(a: Int, b: Int): Int = a + b add: (a: Int, b: Int)Int scala> def addEx(b: Int): Int = add(3, b) addEx: (b: Int)Int scala> addEx(7) res8: Int = 10
add(a: Int)(b: Int)
の場合
scala> def add(a: Int)(b: Int): Int = a + b add: (a: Int)(b: Int)Int scala> def addEx = add(3)_ addEx: Int => Int scala> addEx(4) res7: Int = 7
下の場合だとbの型がかわってもコンパイルエラーにならない。
↑の理由から、implicitパラメータは分けて書くのだと思われる。
trait UserRepository { def findBy(id: domain.user.Id)(implicit reqId: common.request.Id): User }