Bonjour,
Est ce que quelqu'un pourrai m'expliquer la syntax suivante :
Je comprends bien celle-ci
mais pas celle làCode:
1
2
3 handleDrawerOpen = () => { ... }
Merci pour votre aideCode:
1
2
3 handleToggle = value => () => { .... };
Version imprimable
Bonjour,
Est ce que quelqu'un pourrai m'expliquer la syntax suivante :
Je comprends bien celle-ci
mais pas celle làCode:
1
2
3 handleDrawerOpen = () => { ... }
Merci pour votre aideCode:
1
2
3 handleToggle = value => () => { .... };
Pour y voir plus clair, essayons de réécrire ce bout de code avec une syntaxe un peu plus ancienne.
Avec le classique mot-clé function de ES5, la fonction handleToggle s’écrit de manière un peu plus verbeuse :
Code:
1
2
3
4
5 handleToggle = function (value) { return function () { .... }; };
Quand tu appelles handleToggle, ça te renvoie une fonction qui, à son tour, renvoie une autre fonction.
Code:
1
2 let fonctionA = handleToggle(42); let fonctionB = fonctionA();
J’ai mis 42 comme value parce que je n’ai aucune idée de ce qu’il faut mettre, c’est juste pour l’exemple.
Cette autre fonction, fonctionB, est celle qui contient en réalité les .... que tu as écrits.
Ces appels de fonction successifs peuvent s’écrire en une seule instruction :
Code:let fonctionB = handleToggle(42)();
Pour l’anecdote, ce genre de procédéest parfois appeléa un certain rapport avec la curryfication.
Très bonne réponse.
Cependant, je ne suis pas vraiment (du tout) d'accord sur l'utilisation du terme curryfication à la fin.
La curryfication consiste à transformer une fonction ayant plusieurs arguments en une composition de fonctions à un seul argument. Nous ne sommes pas dans ce cas puisque la fonction handleToggle n'a déjà qu'un seul argument.