轨道
/
Gleam
Gleam
/
练习
/
日志级别
日志级别

日志级别

学习练习

简介

字符串

Gleam 中的字符串是用双引号括起来的不可变文本。它们支持 unicode 字符,也可以写成多行。

let greeting = "Hello, Joe! 📞"

let multi_line_string = "one
two
three"

字符串可以用<>运算符拼接在一起:

let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"

标准库中的 gleam/string 模块提供了处理字符串的函数。

字符串可以在 case 表达式中进行匹配:

pub fn on_an_excellent_adventure(name: String) -> Bool {
  case name {
    "Bill" -> True
    "Ted" -> True
    _ -> False
  }
}

如果想匹配字符串的开头,并把剩余部分赋值给一个变量,可以使用<>运算符模式:

pub fn profession(name: String) -> String {
  case name {
    "Dr " <> rest -> rest <> " is a doctor"
    _ -> "I'm not sure what " <> name <> " does"
  }
}

说明

在这个练习中,你将处理日志行。

每行日志都是一个字符串,格式如下:"[<LEVEL>]: <MESSAGE>"。

一共有三种日志级别:

  • INFO
  • WARNING
  • ERROR

你有三个任务,每个任务都会接收一行日志,并要求你对它进行某种处理。

1. 从日志行中获取消息

实现 message函数,返回日志行中的消息:

message("[ERROR]: Invalid operation")
// -> "Invalid operation"

应去掉开头和结尾的空白字符:

message("[WARNING]:  Disk almost full\r\n")
// -> "Disk almost full"

2. 从日志行中获取日志级别

实现 log_level函数,返回日志行的日志级别,返回值应为小写:

log_level("[ERROR]: Invalid operation")
// -> "error"

3. 重新格式化日志行

实现 reformat函数,重新格式化日志行:把消息放在前面,日志级别放在后面并用括号括起来:

reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Gleam Exercism

准备好开始 日志级别 了吗?

注册 Exercism,借助 33 个概念122 个练习 和真人导师指导,学习并掌握 Gleam,全部免费。