Strings em Gleam são textos imutáveis entre aspas duplas. Elas suportam caracteres unicode e podem ter várias linhas.
let greeting = "Hello, Joe! 📞"
let multi_line_string = "one
two
three"
Strings podem ser unidas com o operador <>:
let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"
O módulo gleam/string da biblioteca padrão fornece funções para trabalhar com strings.
É possível 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 você quiser fazer correspondência com o início de uma string e atribuir o resto a uma variável, pode 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, você vai processar linhas de log.
Cada linha de log é uma string formatada assim: "[<LEVEL>]: <MESSAGE>".
Existem três níveis de log diferentes:
INFOWARNINGERRORVocê tem três tarefas, e cada uma delas recebe uma linha de log e pede que você faça algo com ela.
Implemente a função message para retornar a mensagem de uma linha de log:
message("[ERROR]: Invalid operation")
// -> "Invalid operation"
Qualquer espaço em branco no início ou no fim deve ser removido:
message("[WARNING]: Disk almost full\r\n")
// -> "Disk almost full"
Implemente a função log_level para retornar o nível de log de uma linha de log, que deve ser retornado em letras minúsculas:
log_level("[ERROR]: Invalid operation")
// -> "error"
Implemente a função reformat, que reformata a linha de log colocando a mensagem primeiro e o nível de log depois dela, entre parênteses:
reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.