On 07.05.2018 22:03, Guillaume Laforge wrote:
I haven't voted as I'm not a big fan of adding this syntax construct.
My feeling is that we shouldn't necessarily try to become a pure
Java-superset, and it shouldn't be a goal to try more and more to
close that gap.
Being able to write Java constructs in Groovy and incorporating the
improvements Groovy has to offer one after another was a major factor
for me, and it continues to be very helpful when introducing new
colleaugues to Groovy. If they know Java (and who does not, nowadays ?),
you can tell them: Just use what you know and - oh yea, do a search and
replace and remove all the semicolons at the end of each line, and you
can use a multiline String with embedded variables here, you might wanna
use a list literal there - and just say file.text = list.join('\n') to
write the result to a file, ...
There are some confusing cases where (single element) array
initializers can be confounded with closures.
Also, I tend to prefer square brackets over curlies, but that's
certainly a question of taste.
Agree with both points. I still think the plus outhweighs the minus -
see above and below.
The other thing that slightly annoys me is that we're adding
additional syntax for the same thing: array initializers, but look at
how we added lambda notation.
How will we explain users why we have two syntaxes for the same thing?
Or when/why they should use one over the other?
Hence my suggestion to issue a "non-canonical Groovy / Java construct"-
warning in these cases - which everyone seems to confuse with some sort
of coding style warning, which to me it is clearly not: One just has to
ask oneself, whether anyone would have even considered voting for "...a
brand new alias for def: var !", or "...a way to write array literals,
so the look like closures: The amazing curly braces array literals
!".... (spoken with the voice of the boss from "IT Crowd", season 1 ;-) ).
(I understand that we currently don't have warnings in Groovy, but
seriously, how hard can it be to add errors which do not make the build
fail ?-) )
Cheers,
mg