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?
No hay comentarios:
Publicar un comentario