C# – Mais comment prononcer une lambda expression ?
Mais, comment expliquer oralement un bout de code contenant une lambda expression ?
Prenons un exemple, comment dites-vous les lignes de code suivantes ?
IEnumerable<String> values = new String[] { "a", "ab", "bc", "cd" };
values = values.Where(value => value.StartsWith("a"));
La lambda expression correspond à “value => value.StartsWith("a")”.
Actuellement, je lis la 2ème ligne du premier bout code ainsi : “values égale values point where value lambda value point StartsWith a”. (Je sépare les temps de pause par plusieurs espaces)
S’il y a plusieurs arguments et des accolades, par exemple :
values = values.Where((value, i) =>
{
if (value.StartsWith("a"))
return true;
else
return false;
});
Alors je lis “values égale values point where value virgule i lambda entre accolade if value point startswith a return true else return false”
Autant, pour les personnes qui connaissent bien le mécanisme sous-jacent, cela reste compréhensible. Pour les débutants qui ne connaissent pas les lambda expressions, la façon dont on lit ce code n’est pas explicite. J’ai donc cherché d’autres possibilités.
Tout d’abord, revoyons à quoi correspond une lambda expression. Le bout de code ci-dessus est équivalent au code suivant :
IEnumerable<String> values = new String[] { "a", "ab", "bc", "cd" };
Func<String, Boolean> fnc = new Func<String, Boolean>(delegate(String value) { return value.StartsWith("a"); });
values = values.Where(fnc);
Qui lui-même est équivalent au code suivant :
public static void Main(String[] args)
{
IEnumerable<String> values = new String[] { "a", "ab", "bc", "cd" };
Func<String, Boolean> fnc = new Func<String, Boolean>(StartsWithA);
values = values.Where(fnc);
}
private static Boolean StartsWithA(String value)
{
return value.StartsWith("a");
}
Une lambda expression est donc un sucre syntaxique : cela permet de simplifier l’écriture du code. Une lambda expression est un moyen d’envoyer du code à une autre méthode. Malgré ce retour aux origines, cela ne m’a pas permis de trouver une autre façon de lire une lambda expression.
J’ai donc cherché sur le net les réflexions d’autres personnes. J’ai trouvé plusieurs liens traitant de ce sujet. Voici comment certains lisent le => d’une lambda expression:
Après réflexion, tout dépend du contexte.
Pour les personnes connaissant bien le mécanisme des lambda expressions, je vais lire => “lambda”.
Lorsque je parlerais à un débutant, je vais utiliser des verbes décrivant l’action. Parmi ces verbes, “devient” pour une projection, “tel que” pour une condition ou encore “conduit à” dans les autres cas.
Pour les débutants ne connaissant pas du tout les lambda expressions, je vais le lire ainsi “point where lambda avec en entrée [String] value [int] i et [int] j [entre accolade] value point StartsWith en fonction". J’ai mis la prononciation des types entre crochet, je les prononcerais en fonction de la facilité avec laquelle la personne pour qui l’on explique le code sera capable d’inférer les types.
Et vous ? Comment prononcez-vous une lambda expression ?