Is it possible to leave out some implicit parameters but not all of them? I tried with named parameters:
def foo(implicit a: Int, b: String) {
if (a > 0) {
println(b)
foo(a = a-1) // error
}
}
Unfortunately, the compiler rejects the recursive call of foo
with:
not enough arguments for method foo
Unspecified value parameter b
It is not possible to leave out some implicit parameters. So, in your example
def foo(implicit a: Int, b: String): Unit = ???
It is not possible to only specify a
. However, you can specify the default value of the implicit parameter, for example
def foo(implicit a: Int, b: String = "---"): Unit = ???
Where if b
is not implicitly available, "---"
will be used.
Remember that the implicit
keyword marks the parameter list as implicit, not that one parameter as implicit.