> @NamedVariant
> def foo(a, @NamedParam String b, c, @NamedParam(required=true) d) {
>   println "$a $b $c $d"
> }
> 
> which produces a method like this:
> 
> def foo(Map _it, a, c) {
>   assert _it.containsKey('d')
>   this(a, _it.b, c, _it.d)
> }

Do you mean there will be additional method while original method will be left 
as is?

In case of named parameter with default value, there will be tree methods:

def foo(a, @NamedParam b = 42, @NamedParam c) { a+b+c }  // source method

def foo(Map _it, a) { this(a, _it.b, _it.c) } // generated from @NamedParam
def foo(a, c) { this(a, 42, c) }              // generated from default value
def foo(a, b, c) { a+b+c }                    // actual method

Will default be passed if I invoke code with foo(“value for a”, c: 13) ?

How ‘required’ is supposed to work with default parameters?
Why not leverage default params instead of introducing ‘required’? I.e. all 
named params are required by default.

—

Daniil Ovchinnikov
Software Developer
JetBrains
jetbrains.com
“Drive to develop”



Reply via email to