martes
sep132011
Decidida la sintaxis de las closures para Java 8
martes, septiembre 13, 2011 at 8:42AM
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?
in j2se
Reader Comments