Percursos
/
Gleam
Gleam
/
Exercícios
/
Níveis de log
Níveis de log

Níveis de log

Exercício de aprendizagem

Introdução

Strings

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"
  }
}

Instruções

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:

  • INFO
  • WARNING
  • ERROR

Tens três tarefas, cada uma delas vai receber uma linha de registo e pedir-te para fazeres algo com ela.

1. Obter a mensagem de uma linha de registo

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"

2. Obter o nível de registo a partir de uma linha de registo

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"

3. Reformatar uma linha de registo

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)"
Editar via GitHub A ligação abre numa nova janela ou separador
Gleam Exercism

Estás pronto para começar Níveis de log?

Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.