Der Operator |> heißt Pipe-Operator. Mit ihm kannst du Funktionsaufrufe so aneinanderreihen, dass der Rückgabewert des vorherigen Aufrufs an den nächsten Aufruf übergeben wird.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
Der Code oben ist äquivalent zu folgendem:
string.append(string.uppercase("hello"), "?!")
Der Pipe-Operator übergibt den Wert entweder als erstes Argument an den Funktionsaufruf oder als einziges Argument an einen neuen Aufruf, je nachdem, welche Variante den passenden Typ ergibt.
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)
Manchmal möchten wir den Wert an einer anderen Position einsetzen. In diesem Fall kannst du den Platzhalter _ verwenden, um anzugeben, wo der Wert eingefügt werden soll.
100
|> some_function(1, _, 2)
In dieser Übung hilfst du Highschool-Liebespaaren, ihre Liebe in sozialen Medien zu bekunden, indem du ein ASCII-Herz mit ihren Initialen erzeugst:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Implementiere die Funktion first_letter. Sie soll einen Namen entgegennehmen und dessen ersten Buchstaben zurückgeben. Sie soll überflüssige Leerzeichen aus dem Namen entfernen.
first_letter("Jane")
// -> "J"
Implementiere die Funktion initial. Sie soll einen Namen entgegennehmen und dessen ersten Buchstaben in Großbuchstaben zurückgeben, gefolgt von einem Punkt. Stelle sicher, dass du first_letter aus dem vorherigen Schritt wiederverwendest.
initial("Robert")
// -> "R."
Implementiere die Funktion initials. Sie soll einen vollständigen Namen entgegennehmen, der aus einem Vornamen und einem Nachnamen besteht, die durch ein Leerzeichen getrennt sind, und die Initialen zurückgeben. Stelle sicher, dass du initial aus dem vorherigen Schritt wiederverwendest.
initials("Lance Green")
// -> "L. G."
Implementiere die Funktion pair. Sie soll zwei vollständige Namen entgegennehmen und die Initialen in einem ASCII-Herz zurückgeben. Stelle sicher, dass du initials aus dem vorherigen Schritt wiederverwendest.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Melde dich bei Exercism an, um Gleam mit 33 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.