Buscar
Social
Ofertas laborales ES
« Jornada Grails/Groovy en Donostia/San Sebastian | Main | Clinker Virtual Appliance (codename: lithium) »
martes
sep132011

Decidida la sintaxis de las closures para Java 8

Parece que el grupo de expertos que trabajan en la definición de Java 8 por fin han hecho una decisión (casi final en estos momentos) en la sintaxis de las closures, y la decisión es básicamente emplear la sintaxis de C#. Esta sintaxis es:



 lambda = ArgList Arrow Body
   ArgList = Identifier
             | "(" Identifier [ "," Identifier ]* ")"
             | "(" Type Identifier [ "," Type Identifier ]* ")"
   Body = Expression
             | "{" [ Statement ";" ]+ "}"


Algunos ejemplos de closures escritas con ellas son:

 

   x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("I am a Runnable"); }

 

Los motivos que han llevado a tomar esta decisión son dos fundamentalmente. Por un lado, esta sintaxis "parece bastante aceptable". Por otro lado, no hay ninguna métrica clara para decidir entre las distintas opciones de sintaxis que estaban barajando. Por ello han tomado la decisión de optar por algo que "ya está funcionando en el mundo real", y han escogido esta sintaxis, la que emplea C# (que también es muy similar a la de Scala).

¿Qué os parece esta sintaxis?

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.