學習軌道
/
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,全部免費。