With regards to the Groovy 3.0 Release Notes (http://groovy-lang.org/releasenotes/groovy-3.0.html) "Nested code blocks" section: What about in addition supporting two reserved keywords, "block" and "eval", as follows:

void foo() {
  block {
    // Makes nested code block explicit (without it, the block could e.g. have a missing if or else construct before it)     // Avoids the need to use semicolon before nested code block to distinguish code block from a closure
    // Otherwise no difference to Java nested code block
  }

  // equivalent to:
  if(true) { ... }


  final x = eval {
     // Nested code block whose final evaluated statement is its return value
  }

  // semi-equivalent to:
   final x =  true ? (...;...;...) : null
}


The application for these constructs for me lie in cases where one needs to create a scope with a local variables, but where one would need to pass a large number of parameters to a helper method that coud be introduced, or one would really have to try hard to come up with a meaningful method name (implying that the functionality is too small/specialized to be moved into a seperate method).

Thoughts ?
mg



Reply via email to