在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
的不同值不会不同。