@ dave-griffith는 죽었습니다.
다음으로 전화 할 수도 있습니다.
Function.tupled(foo _)
"내가 요청한 것보다 더 많은 정보"영역을 헤매고 싶다면 Function
카레를 위해 부분적으로 적용된 기능 (및 on )에 내장 된 방법도 있습니다 . 몇 가지 입력 / 출력 예 :
scala> def foo(x: Int, y: Double) = x * y
foo: (x: Int,y: Double)Double
scala> foo _
res0: (Int, Double) => Double = <function2>
scala> foo _ tupled
res1: ((Int, Double)) => Double = <function1>
scala> foo _ curried
res2: (Int) => (Double) => Double = <function1>
scala> Function.tupled(foo _)
res3: ((Int, Double)) => Double = <function1>
scala> Function.curried(foo _)
warning: there were deprecation warnings; re-run with -deprecation for details
res6: (Int) => (Double) => Double = <function1>
curried 버전은 여러 인수 목록으로 호출됩니다.
scala> val c = foo _ curried
c: (Int) => (Double) => Double = <function1>
scala> c(5)
res13: (Double) => Double = <function1>
scala> c(5)(10)
res14: Double = 50.0
마지막으로 필요한 경우 풀거나 풀 수도 있습니다. Function
이를위한 내장 기능이 있습니다.
scala> val f = foo _ tupled
f: ((Int, Double)) => Double = <function1>
scala> val c = foo _ curried
c: (Int) => (Double) => Double = <function1>
scala> Function.uncurried(c)
res9: (Int, Double) => Double = <function2>
scala> Function.untupled(f)
res12: (Int, Double) => Double = <function2>