Scala中有没有办法明确告诉函数你想使用默认参数?
实施例
func didFinishTask(progress: Double){
// set up status bar here
}
是否可以将def myFunction(default : Int = 0) { /* logic */ }
myFunction(number match {
case 5 => 5
case _ => ???
})
替换为默认调用函数的东西? (当然,我可以用???
替换,但为了简单起见假设这个例子)
由于
答案 0 :(得分:3)
number match {
case 5 => myFunction(5)
case _ => myFunction()
}
我认为您可以通过模式匹配与功能调用来实现。
答案 1 :(得分:3)
正确的方式是@chengpohi建议的。完全按照你的要求做的唯一方法是搞乱scalac如何在引擎盖下实现默认参数:
myFunction(number match {
case 5 => 5
case _ => myFunction$default$1
})
但这是非常不推荐的。
另外请注意,在REPL中粘贴而不适应时,这可能不起作用,因为REPL将内容包装在其他对象中,您必须知道myFunction$default$1
的绝对路径。要在REPL中测试它,你必须将它包装在一个对象或类中:
scala> object Foo {
| def myFunction(a: Int = 0) = println(a)
|
| val number = 42
| myFunction(number match {
| case 5 => 5
| case _ => myFunction$default$1
| })
| }
defined object Foo
scala> Foo
0
res5: Foo.type = Foo$@2035f1f0