Le stringhe in Gleam sono testo immutabile racchiuso tra virgolette doppie. Supportano i caratteri unicode e possono essere sviluppate su più righe.
let greeting = "Hello, Joe! 📞"
let multi_line_string = "one
two
three"
Le stringhe si possono unire tra loro con l'operatore <>:
let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"
Il modulo gleam/string della libreria standard fornisce funzioni per lavorare con le stringhe.
Nelle espressioni case si può fare pattern matching sulle stringhe:
pub fn on_an_excellent_adventure(name: String) -> Bool {
case name {
"Bill" -> True
"Ted" -> True
_ -> False
}
}
Se vuoi fare pattern matching sull'inizio di una stringa e assegnare il resto a una variabile, puoi usare il pattern con l'operatore <>:
pub fn profession(name: String) -> String {
case name {
"Dr " <> rest -> rest <> " is a doctor"
_ -> "I'm not sure what " <> name <> " does"
}
}
In questo esercizio elaborerai delle righe di log.
Ogni riga di log è una stringa formattata così: "[<LEVEL>]: <MESSAGE>".
Ci sono tre livelli di log diversi:
INFOWARNINGERRORHai tre attività, ognuna delle quali riceverà una riga di log e ti chiederà di fare qualcosa con essa.
Implementa la funzione message per restituire il messaggio di una riga di log:
message("[ERROR]: Invalid operation")
// -> "Invalid operation"
Gli spazi bianchi all'inizio e alla fine vanno rimossi:
message("[WARNING]: Disk almost full\r\n")
// -> "Disk almost full"
Implementa la funzione log_level per restituire il livello di log di una riga di log, che va restituito in minuscolo:
log_level("[ERROR]: Invalid operation")
// -> "error"
Implementa la funzione reformat che riformatta la riga di log, mettendo prima il messaggio e poi il livello di log tra parentesi:
reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.