L'operatore |> è chiamato operatore pipe. Può essere usato per concatenare le chiamate di funzione in modo che il valore restituito dalla chiamata di funzione precedente venga passato alla chiamata successiva.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
Il codice qui sopra equivale al seguente:
string.append(string.uppercase("hello"), "?!")
L'operatore pipe passerà il valore come primo argomento della chiamata di funzione, oppure come unico argomento di una nuova chiamata, scegliendo quello che avrebbe il tipo corretto.
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)
A volte vogliamo passare il valore in un'altra posizione; in questo caso si può usare il segnaposto _ per indicare dove inserire il valore.
100
|> some_function(1, _, 2)
In questo esercizio aiuterai due innamorati del liceo a dichiarare il loro amore sui social media, generando un cuore ASCII con le loro iniziali:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implementa la funzione first_letter. Dovrebbe prendere un nome e restituirne la prima lettera. Dovrebbe anche eliminare dal nome gli spazi bianchi superflui.
first_letter("Jane")
// -> "J"
Implementa la funzione initial. Dovrebbe prendere un nome e restituirne la prima lettera, in maiuscolo, seguita da un punto. Assicurati di riutilizzare first_letter, che hai definito nel passaggio precedente.
initial("Robert")
// -> "R."
Implementa la funzione initials. Dovrebbe prendere un nome completo, composto da un nome e un cognome separati da uno spazio, e restituire le iniziali. Assicurati di riutilizzare initial, che hai definito nel passaggio precedente.
initials("Lance Green")
// -> "L. G."
Implementa la funzione pair. Dovrebbe prendere due nomi completi e restituire le iniziali dentro un cuore ASCII. Assicurati di riutilizzare initials, che hai definito nel passaggio precedente.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.