@ dave-griffith sudah mati.
Anda juga dapat menghubungi:
Function.tupled(foo _)
Jika Anda ingin menjelajahi wilayah "jauh lebih banyak informasi daripada yang saya minta", ada juga metode yang dibangun ke dalam fungsi yang diterapkan sebagian (dan Function
seterusnya) untuk kari. Beberapa contoh masukan / keluaran:
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>
Di mana versi curried dipanggil dengan beberapa daftar argumen:
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
Terakhir, Anda juga dapat membatalkan / melepas jika perlu. Function
memiliki bawaan untuk ini:
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>