変数を使用して値を格納する

完了済み

すべてのプログラムは、通常、プログラムがデータを操作する多くのステップで構成されます。 これらのすべての手順の実行の一環として、断続的な結果であるデータを名前付き参照に格納するのが一般的です。 その後、後でデータを読み取ったり操作したりできます。 名前付き参照は、一般に 変数と呼ばれます。

変数に値をバインドする

変数は、コード内で参照し続ける値にバインドされた名前付き参照です。 F# では、これは値をバインドすると考えられる。 名前付き参照である変数に値を割り当てる、またはバインドするということです。 値をバインドするには、 let キーワード (参照の名前) を使用し、次のコードのように値を割り当てます。

let name = "Chris"

name は名前付き参照であり、"Chris" のバインド値です。

変数に値を割り当てた後は変更できません。変更できません。 次のコードはコンパイルされず、"error FS0027: This value is not mutable" のようなエラーが生成されます。

let name = "Chris"
name <- "Luis" // not allowed

変更可能にする

変数は変更できますが、 変更可能にすることを通知する必要があります。 変数定義でキーワード mutable を使用すると、次のコードのように、コンパイル エラーなしで値を変更できます。

let mutable name = "Chris"
name <- "Luis" // this statement is now allowed

変数の型

F# には、さまざまな型の範囲が存在します。 型の多くは、異なるサイズの数値を格納し、小数の有無にかかわらず行う必要があります。 その他の型は、テキスト文字列またはブール変数に関連付けられています。 F# の学習を開始するときに発生する可能性がある型の一覧を次に示します。

タイプ 説明
ブール (bool) 可能な値は true または false
整数 (int) -2,147,483,648 から 2,147,483,647 までの値。
文字列 Unicode テキスト
float、double 64 ビット浮動小数点型。

型は推論される

変数を宣言する場合は、型の有無に関係なく行うことができます。 変数を宣言するときに型を指定しない場合、F# コンパイラは、変数に割り当てる値によって型が何であるかについて最適な推測を行います。 次のステートメントについて考えてみましょう。

let age = 65 // int
let PI = 3.14 // float
let name = "my name" // string

コンパイラは型を推測し、その推測は正しい。 型を何にするかをより明確に指定することもできます。 データを割り当てるには、次のコードのように構文 variableName:<type>を使用します。

let sum:float = 0.0

多くの場合、画面に印刷できるようにする必要があります。 次のようなさまざまな理由が考えられます。

  • アプリケーションの出力: アプリケーションは何らかの計算を行っており、出力を確認する必要があります。
  • デバッグ: コードのデバッグの一環として、問題を理解するために特定の時点で結果を出力する必要がある場合があります。

画面に出力する理由は他にもありますが、上記の 2 つのシナリオが最も一般的です。

では、どのように画面に印刷しますか? F# では、3 つの異なる関数を使用できます。 これらは printf、 printfn、さらには Console.WriteLineです。 では、違いは何でしょうか。

  • printf: インラインで stdout に出力されます (改行文字なし)。
  • printfn: stdout に出力され、改行文字が追加されます。
  • Console.WriteLine: この関数は、 System 名前空間から取得され、すべての .NET 言語で動作します。

違いはわかっていますが、どれを使用する必要がありますか? F# では、 printf と printfn はより慣用的で好ましいと見なされます。

フォーマッティング

画面への印刷の一環として、テキストと数字を組み合わせることができます。 または、次のように、出力を特定の方法で書式設定することもできます。

  • 位置指定引数: 書式設定するには、 String.Formatなどの .NET 関数を使用できます。この関数では、 String.Format("My name is {0} and I live in {1}", "Chris", "UK")などの位置引数を使用します。

  • 文字列補間: 変数とテキストを組み合わせるもう 1 つの方法は、補間と呼ばれるものを使用することです。 これを使用するには、文字列の前に $ 記号を付け、プレースホルダーを角かっこで囲んで示 {}必要があります。 補間の使用例を次に示します。

    let name = "Luis"
    let company = "Microsoft"
    printfn $"Name: {name}, Company: {company}"
    

    以下のように、かっこの間に表現を追加することもできます。

    let firstNumber = 2000
    let secondNumber = 21
    printfn $"The year is: {firstNumber + secondNumber}"
    

    注

    補間を使用した型チェックはないため、使い方が簡単に見える場合があります。 必ず正しく組み合わせてください。

  • 指定子: 印刷しようとしているものの一部として書式指定子を使用することもできます。 指定子の使用は、F# で書式設定する最も一般的な方法です。 次に例を示します。

    let name = "Chris"
    printf "Hi %s" name
    // prints: Hi Chris
    

    ここでは、フォーマッタ %s を使用して、最初の文字列を変数 nameと混在させる方法を確認できます。

    注

    %s や %iなどのフォーマッタを使用すると、コンパイラによって型がチェックされます。 位置引数が指定した型でない場合は、エラーが表示されます。

書式指定子

書式指定子は多数あります。 次に、発生する可能性のあるものをいくつか示します。

指定子 説明 例
%s 文字列とエスケープ文字を含まないコンテンツに使用されます printf "Hello %s" name
%d、%i 10 進整数として書式設定され、基本整数型が符号付きの場合は符号が付けられます。 printf "年齢: %i" 65
%b ブール値 true または false printf "Setting on: %b" true

書式設定の詳細については、以下を参照してください。 すべての機能について知りたい場合は、 F# ドキュメントの書式設定を参照してください。