在Scala中,是否可以在其他参数中使用curried参数?

在Scala中,是否可以在其他参数中使用curried参数?,scala,Scala,我是斯卡拉的新手。请原谅这个可能愚蠢的问题。所以我有一个咖喱函数。是否可以在调用时调用其他参数 def foo(a: Int)(b: Int): Int = a + b 我想调用类似这样的东西,并在上面使用第一个参数 foo(_)(_ - 1) 或者类似的事情 foo(_)(${0} - 5) 定义方法时,可以为第二个参数指定一个引用第一个参数的默认值 def foo(a: Int)(b: Int = a-1): Int = a + b foo(9)() //res0: Int = 1

我是斯卡拉的新手。请原谅这个可能愚蠢的问题。所以我有一个咖喱函数。是否可以在调用时调用其他参数

def foo(a: Int)(b: Int): Int = a + b
我想调用类似这样的东西,并在上面使用第一个参数

foo(_)(_ - 1)
或者类似的事情

foo(_)(${0} - 5)

定义方法时,可以为第二个参数指定一个引用第一个参数的默认值

def foo(a: Int)(b: Int = a-1): Int = a + b

foo(9)()  //res0: Int = 17
foo(9)(1) //res1: Int = 10
或者,您可以创建一个方法,围绕
foo
来获得您想要的

def fooWrapper(x: Int) = foo(x)(x-1)

fooWrapper(4)  //res0: Int = 7

定义方法时,可以为第二个参数指定一个引用第一个参数的默认值

def foo(a: Int)(b: Int = a-1): Int = a + b

foo(9)()  //res0: Int = 17
foo(9)(1) //res1: Int = 10
或者,您可以创建一个方法,围绕
foo
来获得您想要的

def fooWrapper(x: Int) = foo(x)(x-1)

fooWrapper(4)  //res0: Int = 7

${0}是什么意思?这是否意味着访问第一个参数?@wqlin是的,这就是${0}的含义?这是否意味着访问第一个参数?@wqlin是的,没错,这是否也适用于对象?当然,就像
def foo(a:Fish)(b:Fish=Fish.parent)
您建议的代码是有效的,但是在这种情况下
b
的默认值与
a
的值无关。如果
Fish
是一个
对象,即单个对象,则
Fish.parent
的值对于
a:Fish
的不同值不会不同。这是否也适用于对象?当然,就像
def foo(a:Fish)(b:Fish=Fish.parent)
您建议的代码是有效的,但是在这种情况下
b
的默认值与
a
的值无关。如果
Fish
是一个
对象,即单个对象,则
Fish.parent
的值对于
a:Fish
的不同值不会不同。