定义一个单独的默认变量
我已经定义了使用默认变量的方法。当使用或没有该变量的值的情况下调用该方法时,一切都按预期工作。
但是,当我将方法分配给函数变量时,不再可以在没有参数的情况下调用它。
此示例说明了行为:
def main(args: Array[String]) : Unit = {
doStuff(5)
doStuff()
val f : (Int => Unit) = doStuff
f(5)
f() //compiler error: not enough arguments for method apply: (v1: Int)Unit in trait Function1. Unspecified value parameter v1.
}
def doStuff(x : Int = 5) : Unit = {
println(x)
}
但是,对于一个更具旋转的示例,我需要这个。我可以获取函数变量以使用函数doStuff
的默认值吗?我是否必须将其他类型用于函数变量?
另外,我可以为函数变量f
?
在您定义匿名函数的F函数中,您在哪里给您传递的INT参数给出默认值?发生的事情是编译器将为您提供一种应用方法,并且此应用方法将非默认的INT作为参数!
!您可能可以将您的匿名函数扩展为:
val func1 = new Function1[Int, Unit] {
def apply(x: Int = 5) = println(x)
}
,但即使那将导致汇编失败,因为默认值不会用于函数1特征!
这可能是您想要的:
val f = new Function1[Int, Unit] {
def apply(x: Int) = doStuff(x)
def apply() = doStuff()
}