novembre
2011
Le groupe de travail du projet Lambda a pris une décision concernant la syntaxe des lambdas de Java SE 8 : Syntax decision (en anglais dans le texte).
C’est donc la syntaxe de C# qui sera reprise (dans les grandes lignes – des détails pourraient encore être modifiés).
Cette syntaxe se décompose en deux parties, séparées par une flèche =>
- La partie gauche comporte la signature de la méthode, avec le nom des différents paramètres (et éventuellement leurs types).
- La partie droite comporte soit une simple expression, soit un bloc de code des plus standard (entre accolades donc)
Exemples :
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"); }
Un choix « par défaut » car aucune autre proposition ne s’est vraiment imposée. Il est donc préférable d’opter pour une syntaxe existante et connue…
Ce n’est pas nouveau, mais je n’ai pas eu le temps d’en parler (il faut dire que ça faisait longtemps que je n’avais plus bloggé).
[edit 14/11/2011] Il semblerait que la flèche double ( => ) ait été abandonné au profit de la flèche simple ( -> )
6 Commentaires + Ajouter un commentaire
Tutoriels
Discussions
- Définition exacte de @Override
- Classes, méthodes private
- [ fuite ] memoire
- Possibilité d'accéder au type générique en runtime
- [REFLEXION] Connaitre toutes les classes qui implémentent une interface
- L'apparition du mot-clé const est-il prévu dans une version à venir du JDK?
- Recuperation du nom des parametres
- Difference de performances Unix/Windows d'un programme?
- jre 1.5, tomcat 6.0 et multi processeurs
Tu dis « Il semblerait que la flèche double ( => ) ait été abandonné au profit de la flèche simple ( -> ) » alors maintenant si on utilise le double flèche ça ne va pas compilé car je n’ai pas encore installé le earlyAcess de Java 8, vu qu’il y a des truc qui se compilent mais qui génèrent des erreurs en exécution
@la.lune : Oui il faut bien utiliser la simple flèche ->
Remarque également qu’il y a une early-acces spécifique pour les lambdas : http://jdk8.java.net/lambda/
a++
[…] Le savoir faire Syntaxe des expressions Lambdas par adiGuba (19/09/2011 18:30) Le groupe de travail du projet Lambda a pris une décision […]
@Loic : Concernant les Properties je n’ai rien vu de tel. Mais je ne pense pas que cela fasse partis de Coin 2 car ce dernier se limite aux petites modifications sans impact trop important.
@LGM : Il faut dire que C# est très vorace en fonctionnalité, donc difficile d’envisager une nouvelle fonction qui n’y soit pas déjà présente. Mais je ne dirais pas que Java courre après C#… car ils ont malgré tout une approche très différente.
Sinon il n’y aura pas de langage de requête comme LINQ. Par contre l’API des Collections sera étendus via un ensemble de méthode permettant la même chose…
a++
C’est maintenant à Java de courir derrière le C# en terme de features mais au moins il reprend les bonnes. Autant, au début c’est bien déroutant, autant pour des choses simples et mixé avec du requête type LINQ (je sais pas si Java va avoir ca), c’est juste un vrai plaisir!
C’est un bon choix de syntaxe! Elle est simple est lisible.
Sais tu si on a du nouveau sur le fait d’intégrer ou non un système de properties dans Java 8 avec Coin part 2? Les getters et setters sur les grosses classes avec beaucoup d’attributs, c’est un truc que je n’arrive plus à supporter depuis que j’ai gouté à d’autres langages… Avec ça, les lambda et les modifs du projet Coin part 1 on allégerait dejà pas mal le langage !