O operador |> é chamado de operador pipe. Ele pode ser usado para encadear chamadas de função de modo que o valor retornado pela chamada de função anterior seja passado para a próxima chamada de função.
"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 para a chamada de função, ou como único argumento para uma nova chamada, escolhendo 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)
Às vezes, queremos passar o valor para outra posição. Nesse caso, o placeholder _ pode ser usado para indicar onde o valor deve ser inserido.
100
|> some_function(1, _, 2)
Neste exercício, você vai ajudar namorados do ensino médio a declarar seu amor nas redes sociais, gerando um coração em ASCII com as iniciais deles:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implemente a função first_letter. Ela deve receber um nome e retornar sua primeira letra. Também deve remover qualquer espaço em branco desnecessário do nome.
first_letter("Jane")
// -> "J"
Implemente a função initial. Ela deve receber um nome e retornar sua primeira letra, em maiúscula, seguida de um ponto. Não deixe de reutilizar a função first_letter que você definiu no passo anterior.
initial("Robert")
// -> "R."
Implemente a função initials. Ela deve receber um nome completo, formado por um nome e um sobrenome separados por um espaço, e retornar as iniciais. Não deixe de reutilizar a função initial que você definiu no passo anterior.
initials("Lance Green")
// -> "L. G."
Implemente a função pair. Ela deve receber dois nomes completos e retornar as iniciais dentro de um coração em ASCII. Não deixe de reutilizar a função initials que você definiu no passo anterior.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.