groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: Strategy for optionally excluding a named method parameter?
Date Sat, 25 Apr 2020 23:30:13 GMT
Hi David,

since, as was mentioned, named parameters are implemented as a map 
underneath in Groovy, you should be able to remove the map entry of the 
parameter you do not want to pass, though I did not try this myself...

Cheers,
mg


On 25/04/2020 20:57, David Karr wrote:
>
>
> On Sat, Apr 25, 2020 at 2:00 AM Rathinavelu <rathinavelu@gmail.com 
> <mailto:rathinavelu@gmail.com>> wrote:
>
>     Named parameters are not available in Groovy, say, as in Python.,
>     though they say it is. Groovy has only mapped parameters. The
>     earlier mail works for a single ‘named’ parameter; if there are
>     more parameters Groovy does not work as ‘expected’; it treats them
>     only as positional parameters.
>
>     Kindly mail me an use-case.
>
>     T.Rathinavelu
>
>
> The code sample looks something like this:
>
>     functionName param1: value,
>         param2: value,
>         param3: value,
>         param4: value,
>         ...
>         param25: value
>
> For instance, we need to make either the previous call or the following:
>
>     functionName param1: value,
>         param2: value,
>         param3: value,
>         ...
>         param25: value
>
> Where the "param4" key and value are not provided. Presently, we have 
> an "if" checking for a condition, followed by the "true" block with 
> the first version of the function call with 25 parameters, followed by 
> the "else" and the "false" block with the second version, which has 24 
> parameters, all the same values as in the first block, except for the 
> one key and value not provided in the second version.
>
>     Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986>
>     for Windows 10
>
>     *From: *David Karr <mailto:davidmichaelkarr@gmail.com>
>     *Sent: *Saturday, April 25, 2020 1:48 AM
>     *To: *users@groovy.apache.org <mailto:users@groovy.apache.org>
>     *Subject: *Strategy for optionally excluding a named method parameter?
>
>     Lately my only Groovy work is scripted pipelines in Jenkins,
>     version 2.89.4 .
>
>     I'm working with an api that is somewhat dumb in one respect.  The
>     method we call takes ~25 parameters.  We send them as named
>     parameters. One of the parameters is of boolean type.  What we've
>     discovered from testing is that if we send a value as either
>     "true" or "false", it acts as if we sent "true".  If we construct
>     the call without that parameter entirely, it acts as if we sent
>     "false". I tried making it send null, but that just causes it to
>     fail at runtime.  We presently have an "if" for that one flag,
>     with two calls to the method, one taking 25 parameters, the other
>     taking 24.  It is really obnoxious.
>
>     Obviously, the proper fix is to change their api so that it works
>     correctly. The reality is, that's not going to happen any time
>     soon in geological terms.
>
>     Is there a concise groovy syntax we could use that would
>     optionally include or exclude a single parameter to the method?
>


Mime
View raw message