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つです:
INFOWARNINGERRORタスクは3つあり、どのタスクもログ行を受け取って、それを使って何かを行うものです。
message関数を実装して、ログ行のメッセージを返しましょう:
message "[ERROR]: Invalid operation"
// => "Invalid operation"
先頭や末尾の空白は削除します:
message "[WARNING]: Disk almost full\r\n"
// => "Disk almost full"
logLevel関数を実装して、ログ行のログレベルを返しましょう。ログレベルは小文字で返します:
logLevel "[ERROR]: Invalid operation"
// => "error"
reformat関数を実装して、ログ行を整形し直しましょう。メッセージを先に、ログレベルをそのあとに括弧(())で囲んで置きます:
reformat "[INFO]: Operation completed"
// => "Operation completed (info)"