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
> > > 
> > > 
> > 
> 

Reply via email to