L'opérateur |> s'appelle l'opérateur pipe. Il permet d'enchaîner des appels de fonctions, de sorte que la valeur renvoyée par l'appel de fonction précédent soit passée à l'appel de fonction suivant.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
Le code ci-dessus est équivalent à ce qui suit :
string.append(string.uppercase("hello"), "?!")
L'opérateur pipe passe la valeur soit comme premier argument de l'appel de fonction, soit comme unique argument d'un nouvel appel, en choisissant celle des deux possibilités qui donne le bon type.
100
|> function_that_takes_two_arguments(1)
// Is equivalent to
function_that_takes_two_arguments(100, 1)
100
|> function_that_returns_a_function(1)
// Is equivalent to
function_that_returns_a_function(1)(100)
Il arrive parfois que l'on veuille placer la valeur à une autre position ; dans ce cas, on peut utiliser le marqueur de position _ pour indiquer où la valeur doit être insérée.
100
|> some_function(1, _, 2)
Dans cet exercice, tu vas aider des amoureux de lycée à déclarer leur amour sur les réseaux sociaux en générant un cœur en ASCII avec leurs initiales :
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implémente la fonction first_letter. Elle doit prendre un nom et renvoyer sa première lettre. Elle doit aussi supprimer les espaces superflus du nom.
first_letter("Jane")
// -> "J"
Implémente la fonction initial. Elle doit prendre un nom et renvoyer sa première lettre, en majuscule, suivie d'un point. Pense à réutiliser first_letter, que tu as définie à l'étape précédente.
initial("Robert")
// -> "R."
Implémente la fonction initials. Elle doit prendre un nom complet, composé d'un prénom et d'un nom de famille séparés par un espace, et renvoyer les initiales. Pense à réutiliser initial, que tu as définie à l'étape précédente.
initials("Lance Green")
// -> "L. G."
Implémente la fonction pair. Elle doit prendre deux noms complets et renvoyer les initiales à l'intérieur d'un cœur en ASCII. Pense à réutiliser initials, que tu as définie à l'étape précédente.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Inscris-toi sur Exercism pour apprendre et maîtriser Gleam avec 33 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.