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 <rathinav...@gmail.com
<mailto:rathinav...@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:davidmichaelk...@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?