O operador |> chama-se operador pipe. Podes usá-lo para encadear chamadas de funções, de modo a que o valor devolvido pela chamada de função anterior seja passado à chamada de função seguinte.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
O código acima é equivalente ao seguinte:
string.append(string.uppercase("hello"), "?!")
O operador pipe passa o valor como primeiro argumento da chamada de função, ou como único argumento de uma nova chamada, consoante a opção que tiver o tipo correto.
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)
Por vezes queremos passar o valor para outra posição. Nesse caso, podemos usar o marcador _ para indicar onde o valor deve ser inserido.
100
|> some_function(1, _, 2)
Neste exercício, vais ajudar um casal de namorados do secundário a declarar o seu amor nas redes sociais, gerando um coração em ASCII com as iniciais deles:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implementa a função first_letter. Deve receber um nome e devolver a sua primeira letra. Deve remover qualquer espaço desnecessário do nome.
first_letter("Jane")
// -> "J"
Implementa a função initial. Deve receber um nome e devolver a sua primeira letra, em maiúscula, seguida de um ponto. Certifica-te de que reutilizas a função first_letter que definiste no passo anterior.
initial("Robert")
// -> "R."
Implementa a função initials. Deve receber um nome completo, composto por um primeiro nome e um último nome separados por um espaço, e devolver as iniciais. Certifica-te de que reutilizas a função initial que definiste no passo anterior.
initials("Lance Green")
// -> "L. G."
Implementa a função pair. Deve receber dois nomes completos e devolver as iniciais dentro de um coração em ASCII. Certifica-te de que reutilizas a função initials que definiste no passo anterior.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.