トラック
/
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>"

ログレベルは次の3つです。

  • INFO
  • WARNING
  • ERROR

タスクは3つあり、それぞれのタスクでは、ログ行を受け取ってそれを使って何かをするよう求められます。

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を学んでマスターできます。すべて無料です。