@ डेव-ग्रिफिथ मर चुका है।
तुम भी कॉल कर सकते हैं:
Function.tupled(foo _)
आप "जिस तरह से अधिक जानकारी की तुलना में मैं के लिए पूछा," क्षेत्र में घूमना चाहते हैं, वहाँ भी कर रहे हैं currying के लिए आंशिक रूप से लागू किया कार्य (और Function
पर) में बनाया गया तरीकों। कुछ इनपुट/आउटपुट उदाहरण:
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>
// Function.curried is deprecated
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
अंत में, आप भी uncurry/untuple की जरूरत कर सकते हैं। Function
इस के लिए builtins है:
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>
स्रोत
2010-08-25 16:31:53
क्या होगा यदि foo कुछ वर्ग के निर्माता बनता है? – scout
संभावित डुप्लिकेट [एक टुपल पर फ़ंक्शन कैसे लागू करें?] (Http://stackoverflow.com/questions/1987820/how-to-apply-a-function-to-a-tuple) – Suma