A |> operátor neve pipe operátor. Arra használható, hogy egymás után fűzd vele a függvényhívásokat úgy, hogy az előző függvényhívás által visszaadott érték a következő függvényhívásnak adódjon át.
"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"
A fenti kód ugyanazt jelenti, mint a következő:
string.append(string.uppercase("hello"), "?!")
A pipe operátor az értéket vagy első argumentumként adja át a függvényhívásnak, vagy egyetlen argumentumként egy új hívásnak, attól függően, hogy melyiknél lesz a típus helyes.
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)
Néha az értéket egy másik pozícióba szeretnénk átadni, ilyenkor a _ helyőrzővel jelölhetjük meg, hova kerüljön az érték.
100
|> some_function(1, _, 2)
Ebben a feladatban középiskolás szerelmespároknak segítesz, hogy a közösségi médiában nyilvánosan kifejezzék a szerelmüket: egy ASCII-szívet rajzolsz a névbetűikkel:
****** ******
** ** ** **
** ** ** **
** * **
** **
** J. K. + M. B. **
** **
** **
** **
** **
** **
** **
***
*
Valósítsd meg a first_letter függvényt. A függvény egy nevet kap, és visszaadja annak első betűjét. A névből eltávolít minden felesleges szóközt.
first_letter("Jane")
// -> "J"
Valósítsd meg az initial függvényt. A függvény egy nevet kap, és visszaadja annak első betűjét nagybetűvel, mögötte egy ponttal. Ügyelj rá, hogy újra felhasználd a first_letter függvényt, amit az előző lépésben definiáltál.
initial("Robert")
// -> "R."
Valósítsd meg az initials függvényt. A függvény egy teljes nevet kap, amely egy keresztnévből és egy vezetéknévből áll, szóközzel elválasztva, és visszaadja a névbetűket. Ügyelj rá, hogy újra felhasználd az initial függvényt, amit az előző lépésben definiáltál.
initials("Lance Green")
// -> "L. G."
Valósítsd meg a pair függvényt. A függvény két teljes nevet kap, és visszaadja a névbetűket egy ASCII-szív belsejében. Ügyelj rá, hogy újra felhasználd az initials függvényt, amit az előző lépésben definiáltál.
pair("Blake Miller", "Riley Lewis")
// -> "
// ****** ******
// ** ** ** **
// ** ** ** **
// ** * **
// ** **
// ** B. M. + R. L. **
// ** **
// ** **
// ** **
// ** **
// ** **
// ** **
// ***
// *
// "
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Gleam nyelvet 33 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.