Hi Gianluca, `var` was introduced to Groovy just for the better compatibility of Java. Java just supports declaring variables with `var`, so does Groovy.
Cheers, Daniel Sun On 2024/11/21 10:37:23 Gianluca Sartori wrote: > Hello everybody, > > My name is Gianluca Sartori, from Italy, I am the author of the open source > project Dueuno Elements (https://github.com/dueuno-projects/dueuno-elements) > and I am new to this list. > > I would like to start using the more Java-ish `var` instead of the > Python-ish `def` lexicon but I came across the fact that I cannot use `var` > as method return type placeholder. > > My understanding is that I can use `var` for both local variables and class > fields/properties but I cannot use it, for example, if I want to have a > read only property. The code below does not compile: > > class C { > var firstname > var lastname > > var getFullname() { > return firstname + ' ' + lastname > } > } > > var c = new C(firstname: 'Gianluca', lastname: 'Sartori') > c.fullname > > I'd like to switch to using `var` as a type placeholder, but having to use > `var` for variable declaration and keep using `def` for methods definition > is something I don't understand. I love Groovy because it is easy. This > restriction of the `var` type placeholder forces me to write code that > mixes Python lexicon the new Java lexicon. > > My main worry is with Grails controllers where we need to define an action > using `def` (or `Object`) as return type and define variables in the method > body. At the moment we have the following options: > > *def* index() { > *def* myVar = ... > } > > *def* index() { > *var* myVar = ... > } > > *def* index() { > *Object* myVar = ... > } > > *Object* index() { > *def* myVar = ... > } > > *Object* index() { > *var* myVar = ... > } > > *Object* index() { > *Object* myVar = ... > } > > I would like to write controllers like this: > > *var* index() { > *var* myVar = ... > } > > to keep the code clean and coherent with the Groovy documentation that > states clearly that *"If you think of def and var as an alias of Object, > you will understand in an instant."* > > Is this enough of an argument to ask for an implementation of `var` that is > fully intrechangable with `def`? > > Please let me know what is your opinion on that, > cheers, > Gianluca > > Gianluca Sartori > -- > Cell. +39 388 1026822 >