在函数scala中传递默认参数

在函数scala中传递默认参数,scala,function,Scala,Function,我试图在一个函数中传递一个默认参数,就像我们在方法中可以做的那样。但是我得到了一个错误。是否可以将默认args/命名args传递给类似函数的方法? 调用函数时是否可以在函数中传递命名参数?这仅适用于方法(使用def定义) def func(i:Int=2)=i 然而,不管怎么做,都有点“黑客”的味道 var f(i:Int=2,j:Int) => i + j 这是行不通的。如果要定义lambda,请尝试以下操作 val f = (i:Int,j:Int) => i + j 这是

我试图在一个函数中传递一个默认参数,就像我们在方法中可以做的那样。但是我得到了一个错误。是否可以将默认args/命名args传递给类似函数的方法?
调用函数时是否可以在函数中传递命名参数?

这仅适用于方法(使用
def
定义)

def func(i:Int=2)=i
然而,不管怎么做,都有点“黑客”的味道

var f(i:Int=2,j:Int) => i + j
这是行不通的。如果要定义lambda,请尝试以下操作

val f = (i:Int,j:Int) => i + j
这是正确的做法。此外,不能在lambda中指定默认值。您需要使用def关键字定义方法。试试这个:

def f(i:Int, j:Int=2) = i + j
具有默认值的参数应该是最后一个参数,因为scala编译器将从左到右扫描值。只有缺少默认值时,才会使用默认值。在上述代码中,
f(1)
将产生3,因为
j
将使用2作为默认值。因此,在左侧使用强制参数,在右侧使用默认值的参数。希望这有帮助


此处解释:

您可以在此处使用curried函数

def sum1(a:Int=2)(b:Int) = a+b

sum1(33)
希望这能回答您的问题。

使用函数定义。不需要提供带有的参数:

我的班级
{
定义f(i:Int=2,j:Int)=i+j
}
var my=new my()
my.f(j=1)//i=2,j=1
my.f(i=3,j=1)//i=3,j=1
my.f(3,1)//i=3,j=1

您可以发布您的示例代码吗?你到底想做什么?请发布示例代码。请不要。Downvote和忘记添加=请在fPlease之后发布您的代码。我指的是你的密码,不是你密码的照片。这是一个编程网站,不是一个摄影网站;我们想复制、粘贴和调试您的代码,而不是批评它对颜色和透视图的使用。对不起,先生,请不要误会,我已经编写了一个代码,但有人让我发送整个代码,所以我拿了这个代码片段,我通过电话问问题,所以我上传了这个代码片段。你是一个很棒的程序员,我很欣赏它,但不要散布消极的东西,而是这样的争论,而不是回答问题。再一次,我很抱歉,先生!!哇,那个特拉维斯·布朗真是个可怕的家伙。