Modifier

Décidément, WinDev® 25 cherche à plaire aux codeurs. En effet, cette nouvelle version va intégrer les lambdas.

La nouveauté 100 introduit ce nouveau concept.

Qu'est-ce qu'une lambda ?

Je vous invite à aller lire la définition dans Wikipedia : Fonction anonyme.

Une lambda est une fonction anonyme (fonction sans nom). Mais comme elle n'a pas de nom, elle ne peut pas être définie de la même manière qu'une méthode, procédure globale, locale ou interne. Elle est donc définie au moment de son utilisation.

Dans les dernières versions, PCSoft® a introduit les procédures internes. L'idée derrière ces procédures était de pouvoir créer facilement des callbacks. On passe une procédure interne à une autre procédure. Celle-ci va appeler notre procédure interne en réponse au traitement qu'elle a effectué. Bien entendu, les procédures internes servent à faire beaucoup d'autres choses (organisation du code, closure, etc...).

J'affectionne particulièrement les procédures internes, mais elles ont un inconvénient, c'est qu'elles sont très verbeuses !

Et bien, les lambdas vont permettre de créer des procédures avec le strict minimum.

Comment ça marche

La documentation des nouveautés ne nous donne pas beaucoup d'éléments, mais assez pour comprendre le fonctionnement.

Voyons voir l'exemple de la nouveauté 100 :

Documents est un tableau de chaînes
fListeFichier("*.docx", (Chemin, Nom)=>Documents.Ajoute(Nom))

Cet exemple liste tous les fichiers *.docx du répetoire courant et les ajoute dans un tableau de chaines Documents.

L'équivalent avec une procédure interne serait le suivant :

Documents est un tableau de chaînes
fListeFichier("*.docx", ajouter_document)

PROCEDURE INTERNE ajouter_document(Chemin, Nom)
    Documents.Ajoute(Nom)
FIN

C'est un incroyable gain de lignes et dans le cas de l'exemple, ça ajoute de la lisibilité (pour peu que l'on comprenne le principe des lambdas, sinon, c'est l'inverse et la compréhension devient catastrophique).

On ne nous dit pas tout...

C'est en étudiant la nouveauté 101 (Filter / Map / Reduce) que l'on comprend le pourquoi des lambdas. Je reviendrai sur cette nouveauté un peu plus tard. Mais les exemples de la 101 nous permettent d'en savoir un peu plus. On constate en particulier l'utilisation des accolades {}. Les accolades (nouveauté 098) ont certainement été ajouté dans WinDev 25 pour pouvoir créer des fonctions lambda sur plusieurs lignes. Et oui, l'exemple 100 n'est pas très clair sur ce point.

On peut donc supposer que l'on pourra créer une lambda sur plusieurs lignes en utilisant les {} et les ;.

Conclusion

Cette nouveauté est très intéressante et permet encore une fois d'aller un peu plus loin dans l'art du code. Je vous invite à tester et à maîtriser dès que possible cette nouveauté qui révolutionnera probablement votre manière de coder ! Et vous, qu'en pensez-vous ?

Article suivant Article précédent

Blog Comments powered by Disqus.