Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 斯卡拉简单咖喱_Scala_Currying - Fatal编程技术网

Scala 斯卡拉简单咖喱

Scala 斯卡拉简单咖喱,scala,currying,Scala,Currying,我用scala编写了以下两个函数: def f: (Int,Int) => Int = (x,y) => x+y def g: Int=>Int=>Int=x=>y=>x+y 现在我想写一个函数,它把函数f,带一个参数,转换成函数g,带两个参数 除了定义之外,我找不到解决这个问题的办法 curry: ((Int, Int) => Int) => (Int => Int => Int): 有什么建议吗?您能简单地使用curried功能

我用scala编写了以下两个函数:

def f: (Int,Int) => Int = (x,y) => x+y
def g: Int=>Int=>Int=x=>y=>x+y
现在我想写一个函数,它把函数f,带一个参数,转换成函数g,带两个参数

除了定义之外,我找不到解决这个问题的办法

curry: ((Int, Int) => Int) => (Int => Int => Int):

有什么建议吗?

您能简单地使用
curried
功能吗

scala> def f: (Int,Int) => Int = (x,y) => x+y
f: (Int, Int) => Int

scala> val g = f.curried
g: Int => (Int => Int) = <function1>

scala> g(1)(2)
res0: Int = 3

您能简单地使用
curried
功能吗

scala> def f: (Int,Int) => Int = (x,y) => x+y
f: (Int, Int) => Int

scala> val g = f.curried
g: Int => (Int => Int) = <function1>

scala> g(1)(2)
res0: Int = 3
scala>def(x:Int,y:Int)=x+y
f:(x:Int,y:Int)Int
scala>defcurry(fn:(Int,Int)=>Int=(x:Int)=>(y:Int)=>fn(x,y)
咖喱:(fn:(Int,Int)=>Int)Int=>(Int=>Int)
scala>val g=咖喱(f)
g:Int=>(Int=>Int)=
scala>g(3)(4)
res0:Int=7
scala>def(x:Int,y:Int)=x+y
f:(x:Int,y:Int)Int
scala>defcurry(fn:(Int,Int)=>Int=(x:Int)=>(y:Int)=>fn(x,y)
咖喱:(fn:(Int,Int)=>Int)Int=>(Int=>Int)
scala>val g=咖喱(f)
g:Int=>(Int=>Int)=
scala>g(3)(4)
res0:Int=7

有没有办法将其作为函数编写?我试图了解如何在Scala中应用咖喱。我觉得我理解咖喱本身,但我无法应用它。你可以在
Function2
中查看
curried
的源代码,它非常简单。查看我的回复编辑。酷!你能给源代码添加一个链接吗?也许它会驱使某人潜入其中!有没有办法把它写成函数?我试图了解如何在Scala中应用咖喱。我觉得我理解咖喱本身,但我无法应用它。你可以在
Function2
中查看
curried
的源代码,它非常简单。查看我的回复编辑。酷!你能给源代码添加一个链接吗?也许它会驱使某人潜入其中!这就是我要找的。谢谢你能再回答一个问题吗?如果我输入
curry(f(2,3))
我会得到一个类型不匹配。我理解错了什么?好吧,
f(2,3)
的计算结果是
5
,一个
Int
curry()
需要一个函数作为其参数。谢谢。在我完全理解咖喱(目前正试图编写一个未经修改的函数)之前,我仍然需要做大量的工作,但这对我帮助很大。这就是我一直在寻找的。谢谢你能再回答一个问题吗?如果我输入
curry(f(2,3))
我会得到一个类型不匹配。我理解错了什么?好吧,
f(2,3)
的计算结果是
5
,一个
Int
curry()
需要一个函数作为其参数。谢谢。在我完全理解咖喱(目前正试图编写一个未完成的函数)之前,我还必须做大量的工作,但这对我帮助很大。
scala> def f(x: Int, y: Int) = x + y
f: (x: Int, y: Int)Int

scala> def curry(fn: (Int, Int) => Int) = (x: Int) => (y: Int) => fn(x, y)
curry: (fn: (Int, Int) => Int)Int => (Int => Int)

scala> val g = curry(f)
g: Int => (Int => Int) = <function1>

scala> g(3)(4)
res0: Int = 7