A function can have implicit parameters in Scala, marked by the implicit keyword at the beginning of the parameter list. If the parameter is not passed, as usual, the compiler looks for an implicit value of the correct type and passes it as the function’s argument.
def f1(implicit x:Int, y:String) // x and y are implicit
def f2(y:String)(implicit x:Int) // only x is implicit
In the following example, we define the function sum using the implicit keyword in the parameters. As demonstrated by the output, the compiler searches for the value toAdd by itself.
We can also provide the value to the sum function despite the arguments defined as implicit. This is demonstrated in line 8, where we provide the value to the sum function. We can see this here:
val val1 = 50implicit val val2 = 120def sum(implicit toAdd: Int) = val1 + toAdd// Implicit parameter will be passed hereval result = sum// We provide an explicit parameter hereval result2 = sum(50)println(result)println(result2)
Free Resources