El operador |> se llama operador de tubería. Se puede usar para encadenar llamadas a funciones de manera que el valor devuelto por la llamada anterior se pase a la siguiente llamada.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
El código de arriba es equivalente al siguiente:
string.append(string.uppercase("hello"), "?!")
El operador de tubería pasa el valor como primer argumento de la llamada a la función, o como único argumento de una nueva llamada, eligiendo la opción que tenga el tipo correcto.
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 veces queremos pasar el valor a otra posición; en ese caso, podemos usar el marcador de posición _ para indicar dónde se debe insertar el valor.
100
|> some_function(1, _, 2)
En este ejercicio vas a ayudar a una pareja de novios de secundaria a declarar su amor en las redes sociales generando un corazón ASCII con sus iniciales:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implementa la función first_letter. Debe tomar un nombre y devolver su primera letra. Además, debe eliminar los espacios en blanco innecesarios del nombre.
first_letter("Jane")
// -> "J"
Implementa la función initial. Debe tomar un nombre y devolver su primera letra en mayúscula, seguida de un punto. Asegúrate de reutilizar first_letter, que definiste en el paso anterior.
initial("Robert")
// -> "R."
Implementa la función initials. Debe tomar un nombre completo, formado por un nombre y un apellido separados por un espacio, y devolver las iniciales. Asegúrate de reutilizar initial, que definiste en el paso anterior.
initials("Lance Green")
// -> "L. G."
Implementa la función pair. Debe tomar dos nombres completos y devolver las iniciales dentro de un corazón ASCII. Asegúrate de reutilizar initials, que definiste en el paso anterior.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.