As strings em Gleam são texto imutável rodeado por aspas duplas. Suportam caracteres unicode e podem ocupar várias linhas.
let greeting = "Hello, Joe! 📞"
let multi_line_string = "one
two
three"
Podes unir strings com o operador <>:
let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"
O módulo gleam/string da biblioteca padrão disponibiliza funções para trabalhar com strings.
Podes também fazer correspondência de padrões com strings em expressões case:
pub fn on_an_excellent_adventure(name: String) -> Bool {
case name {
"Bill" -> True
"Ted" -> True
_ -> False
}
}
Se quiseres fazer correspondência com o início de uma string e atribuir o resto a uma variável, podes usar o padrão do operador <>:
pub fn profession(name: String) -> String {
case name {
"Dr " <> rest -> rest <> " is a doctor"
_ -> "I'm not sure what " <> name <> " does"
}
}
Neste exercício vais processar linhas de registo.
Cada linha de registo é uma string formatada da seguinte forma: "[<LEVEL>]: <MESSAGE>".
Há três níveis de registo diferentes:
INFOWARNINGERRORTens três tarefas, cada uma delas vai receber uma linha de registo e pedir-te para fazeres algo com ela.
Implementa a função message para devolver a mensagem de uma linha de registo:
message("[ERROR]: Invalid operation")
// -> "Invalid operation"
Os espaços em branco no início ou no fim devem ser removidos:
message("[WARNING]: Disk almost full\r\n")
// -> "Disk almost full"
Implementa a função log_level para devolver o nível de registo de uma linha de registo, que deve ser devolvido em minúsculas:
log_level("[ERROR]: Invalid operation")
// -> "error"
Implementa a função reformat, que reformata a linha de registo, colocando a mensagem primeiro e o nível de registo a seguir, entre parênteses:
reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.