是否可以省略一些隐含的参数,但不是全部?我尝试使用命名参数:
def foo(implicit a: Int, b: String) {
if (a > 0) {
println(b)
foo(a = a-1) // error
}
}
不幸的是,编译器拒绝foo
的递归调用:
not enough arguments for method foo
Unspecified value parameter b
答案 0 :(得分:1)
不确定你想要实现的目标,但是这样的事情可以做到:
def foo(implicit a: Int, b: String): Unit = {
def helper(a: Int)(implicit b: String): Unit =
if (a > 0) {
println(b)
helper(a - 1)
}
helper(a)
}
答案 1 :(得分:1)
不可能省略一些隐含参数。所以,在你的例子中
def foo(implicit a: Int, b: String): Unit = ???
无法仅指定a
。但是,您可以指定隐式参数的默认值,例如
def foo(implicit a: Int, b: String = "---"): Unit = ???
如果b
未隐式可用,则会使用"---"
。
请注意,implicit
关键字将参数列表标记为隐式,而不是将一个参数标记为隐式。