@ dave-griffith öldü.
Ayrıca şunları da arayabilirsiniz:
Function.tupled(foo _)
"Benim istediğimden çok daha fazla bilgi" alanına girmek istiyorsanız, körleme için kısmen uygulanan (ve açık Function
) işlevlere yerleşik yöntemler de vardır . Birkaç girdi / çıktı örneği:
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>
Burada curried versiyonu birden fazla argüman listesiyle çağrılır:
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
Son olarak, gerekirse curry / unuple da yapabilirsiniz. Function
bunun için yerleşikler var:
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>