Love it

Gianluca Sartori
--
Cell. +39 388 1026822


On Wed, 11 Dec 2024 at 02:33, Paul King <pa...@asert.com.au> wrote:

> I created this pull request which clarifies things somewhat:
>
> https://github.com/apache/groovy/pull/2133
>
> But feel free to create an alternative if you think it can be improved
> further.
>
> Cheers, Paul.
>
> On Wed, Dec 11, 2024 at 12:58 AM Milles, Eric (TR Technology)
> <eric.mil...@thomsonreuters.com> wrote:
> >
> > > If you think of def and var as an alias of Object, you will understand
> in an instant.
> >
> > I too think this line should be replaced.  There are circumstances where
> def only means "define" and is not a type placeholder.
> >
> > multi-variable declaration: def (a, int b, char c) = [0,1,'2'] // def is
> not synonymous with Object
> >
> > I would argue that def for method/function/procidure declaration also
> means "define"
> >
> >
> > ________________________________
> > From: o...@ocs.cz <o...@ocs.cz>
> > Sent: Tuesday, December 10, 2024 8:49 AM
> > To: Groovy_Developers <dev@groovy.apache.org>
> > Cc: Paul King <pa...@asert.com.au>; MG <mg...@arscreat.com>
> > Subject: Re: [EXT] Using `var` as method return type placeholder
> >
> > Ah, I though we are discussing the real usage/support, not just the
> documentation (which of course can be always improved).
> >
> > Most probably the proper solution would be change the documentation to
> something more-or-less like
> >
> > ===
> > [def explained without mentioning var] Note that for a seamless
> compatibility with a Java legacy code, you can also use var, which can be
> placed where Java allows it (typically variable declarations) and where
> applicable, it is fully equivalent to def.
> > ===
> >
> > Myself, I would also add something like
> >
> > ===
> > Although var does work and will work in future all right, when (if ever)
> the code is “groovyfied” by removing semicolons, replacing for(:) by for/in
> etc., we also recommend to replace vars by defs for consistence (there is
> no functional difference though; if you like var personally, feel free to
> stick with it, just like you can freely stick with semicolons).
> > ===
> >
> > Incidentally, myself, I don't like the “Object alias” part. To me it
> seems rather misleading. Frankly I don't know how it currently works (and
> what changes, if any, are presumed for future), but in my personal opinion
> there's a subtle but important difference: def is just about anything (and
> should support type inference far as reasonably possible). Object is an
> instance of the Object class (and whether it should infer types even if
> possible or not is highly arguable). Nevertheless this path leads to a need
> to support something like ObjC __kindof, which Groovy (far as I know)
> currently has not, along with better dynamic typechecking etc., and would
> open another big can of worms.
> >
> > To me, nothing of this seems too important though (and had I understood
> we are debating docs only, I would not write my previous message quoted
> below). Even if the documentation is imperfect (any documentation always
> is), it gives a good overall idea how things work; the fine details can be
> easily learnt later.
> >
> > Thanks and all the best,
> > OC
> >
> > On 10. 12. 2024, at 15:21, Gianluca Sartori <g.sart...@gmail.com> wrote:
> >
> > I might be wrong and I might have misunderstood something of importance,
> but it seems to me there is one (and only one) very specific need to use
> var: ensuring a code copy/pasted from Java works (with as little number of
> problems as reasonably possible).
> >
> >
> > This is what I understood as well reading the docs, but it looks like
> `var` is starting to become a full part of the Groovy syntax because it has
> been documented along with `def` as equal to `def` (but only for variable
> definitions).
> >
> >
> > I would like to use `var` as a return type placeholder meaning "this
> method returns a variable"
> >
> >
> > What does it mean? Far as I know (but of course, my knowledge is
> limited), there's no var-ref type in Java (nor Groovy), and thus no method
> can return a variable. Have I missed something of importance again?
> >
> >
> > You have missed that part in the docs where it says:
> >
> > > If you think of def and var as an alias of Object, you will understand
> in an instant.
> >
> > So if `var` is an alias for `Object` one should be able to use it as a
> type placeholder in method return types as well, but that's not the case
> >
> >
> >
> >
>

Reply via email to