トラック
/
F#
F#
/
演習
/
ログレベル
ログレベル

ログレベル

学習演習

はじめに

文字列

F#のstringは、Unicode文字(英字、数字、句読点など)の並びとして、変更できないテキストを表すオブジェクトで、次のように定義します。

let fruit = "Apple"

文字列は、その文字列のメソッドを呼び出すか、Stringモジュールの関数を使うことで操作します。一度文字列を作成すると、その値を変えることはできません。文字列を変更するように見えるメソッドや関数は、実際には新しい文字列を返します。

文字列は、いくつかの方法で連結したり、書式を整えたりできます。

  • 連結には+演算子を使えます。
let sentence = "Apple" + " is a type of fruit."
  • テキストの書式設定にはsprintf関数を使えます。書式テキストの中にプレースホルダー(stringの場合は%s)を置き、値を引数として渡します。
let sentence = sprintf "%s is a type of %s." "Apple" "fruit"

説明

この演習では、ログ行を処理します。

それぞれのログ行は、"[<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. ログ行からログレベルを取得する

logLevel関数を実装して、ログ行のログレベルを返しましょう。ログレベルは小文字で返します:

logLevel "[ERROR]: Invalid operation"
// => "error"

3. ログ行を整形し直す

reformat関数を実装して、ログ行を整形し直しましょう。メッセージを先に、ログレベルをそのあとに括弧(())で囲んで置きます:

reformat "[INFO]: Operation completed"
// => "Operation completed (info)"
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
F# Exercism

ログレベルを始める準備はできましたか?

Exercismに登録すれば、18個のコンセプト148個の演習、そして本物の人間によるメンタリングとともに、F#を学んでマスターできます。すべて無料です。