I’m trying to understand the point of this language feature of multiple parameter clauses and why you would use it.
Eg, what’s the difference between these two functions really?
class WTF {
def TwoParamClauses(x : Int)(y: Int) = x + y
def OneParamClause(x: Int, y : Int) = x + y
}
>> val underTest = new WTF
>> underTest.TwoParamClauses(1)(1) // result is '2'
>> underTest.OneParamClause(1,1) // result is '2'
There’s something on this in the Scala specification at point 4.6. See if that makes any sense to you.
NB: the spec calls these ‘parameter clauses’, but I think some people may also call them ‘parameter lists’.
Here are three practical uses of multiple parameter lists,
To aid type inference. This is especially useful when using higher order methods. Below, the type parameter
Aofg2is inferred from the first parameterx, so the function arguments in the second parameterfcan be elided,For implicit parameters. Only the last parameter list can be marked implicit, and a single parameter list cannot mix implicit and non-implicit parameters. The definition of
g3below requires two parameter lists,To set default values based on previous parameters,