Or a more verbose version: ``` return callB() if (r -> r > 10) ```
Cheers, Daniel Sun On 2020/07/25 19:51:47, Daniel Sun <sun...@apache.org> wrote: > If we take intellisense of IDE into account, the proposal could be refined as > follows: > > ``` > return callB() [r -> r > 10] > ``` > > Cheers, > Daniel Sun > On 2020/07/25 19:39:20, Daniel Sun <sun...@apache.org> wrote: > > Hi OC, > > > > Let me make the example a bit more complicated to clarify my proposal: > > > > ``` > > def m() { > > def a = callA() > > if (null != a) return a > > > > def b = callB() > > if (b > 10) return b > > > > def c = callC() > > if (null != c && c < 10) return c > > > > LOGGER.debug('the default value will be returned') > > > > return defaultValue > > } > > ``` > > The above code could be simplified as follows: > > ``` > > def m() { > > return? callA() // same to `return(r -> null != r) > > callA()` > > return(r -> r > 10) callB() > > return(r -> null != r && r < 10) callC() > > > > LOGGER.debug('the default value will be returned') > > > > return defaultValue > > } > > ``` > > > > Cheers, > > Daniel Sun > > On 2020/07/25 19:21:01, OCsite <o...@ocs.cz> wrote: > > > Daniel, > > > > > > -1. In my personal experience this happens very rarely, not worth a > > > special support in the language by far. Almost all similar cases for me > > > are covered by simple > > > > > > def foo() { > > > ... ... > > > bar()?:defaultValue > > > } > > > > > > and the cases where this is not adequate, either due a non-null false > > > return value which should be returned instead of the default, or due to a > > > non-trivial code needed at //! below, in my code almost never happen. > > > > > > Contrariwise, if you are about to improve the language for simplicity and > > > easiness of returns, you definitely should consider allowing returning > > > void from a void method — this should be a completely valid code (as is > > > e.g., in C): > > > > > > void foo() { ... } > > > void bar() { > > > return foo() > > > } > > > > > > As always, of course, YMMV. > > > > > > All the best, > > > OC > > > > > > > On 25 Jul 2020, at 20:55, Daniel Sun <sun...@apache.org> wrote: > > > > > > > > Hi all, > > > > > > > > We always have to check the returning value, if it match some > > > > condition, return it. How about simplifying it? Let's see an example: > > > > > > > > ``` > > > > def m() { > > > > def r = callSomeMethod() > > > > if (null != r) return r > > > > //! > > > > return theDefaultResult > > > > } > > > > ``` > > > > > > > > How about simplifying the above code as follows: > > > > ``` > > > > def m() { > > > > return? callSomeMethod() > > > //! > > > > return theDefaultResult > > > > } > > > > ``` > > > > > > > > Futhermore, we could make the conditional return more general: > > > > ``` > > > > def m() { > > > > return(r -> r != null) callSomeMethod() // we could do more > > > > checking, e.g. r > 10 > > > > return theDefaultResult > > > > } > > > > ``` > > > > > > > > Any thoughts? > > > > > > > > Cheers, > > > > Daniel Sun > > > > > > > > >