演習 - 関数

完了済み

この演習では、コードを再利用できるようにします。 チームの別のプログラマーが書いたコードを、あなたが関数に変換する必要があるとします。

関数の作成

まず、新しい F# プロジェクトをスキャフォールディングします。次に、コードの一部を取得し、それをパラメーターを持つ関数に変換します。

  1. 新しい F# プロジェクトを作成するには、dotnet new を実行します。

    dotnet new console --language F# -o Functions
    cd Functions
    

    新しいプロジェクトが完成したので、コードを見てみましょう。

    同僚のコードは次のようになります。

    let no = card % 13
    if no = 1 then "Ace"
    elif no = 0 then "King"
    elif no = 12 then "Queen"
    elif no = 11 then "Jack"
    else string no
    
  2. Program.fs ファイルの既定のコードを次のコードに置き換えます。

    let cardFace card = 
       let no = card % 13
       if no = 1 then "Ace"
       elif no = 0 then "King"
       elif no = 12 then "Queen"
       elif no = 11 then "Jack"
       else string no
    

    このコードの先頭行 let cardFace card が関数になります。 これで、パラメーター cardface() を受け取る card という名前の関数になりました。

  3. cardface() 関数の下に次のコードを追加します。

    printfn "%s" (cardFace 11)
    
  4. コンソールで dotnet run を呼び出してプロジェクトを実行します。

    dotnet run
    

    次のような出力が表示されます。

    Jack
    

おめでとうございます。 再利用可能にするコードの一部を受け取り、関数に変換しました。

型を追加する

同僚のコードを関数に変換しました。 このコードをさらに読みやすくするために、型定義を追加することにしました。

  1. 既存の関数 cardface() を次のように変更します。

    let cardFace (card:int) = 
        let no = card % 13
        if no = 1 then "Ace"
        elif no = 0 then "King"
        elif no = 12 then "Queen"
        elif no = 11 then "Jack"
        else string no
    
  2. 次に、プロジェクト dotnet run を実行します。

    dotnet run
    

    次のような出力が表示されます。

    Jack
    

    コードは引き続き動作しますが、入力パラメーターに型を追加することで、より明確にできました。

  3. cardface() 関数を次のように変更します。

    let cardFace (card:int) :string = 
        let no = card % 13
        if no = 14 || no = 1 then "Ace"
        elif no = 13 then "King"
        elif no = 12 then "Queen"
        elif no = 11 then "Jack"
        else string no
    

    この時点で、関数 :string に戻り値の型を追加しました。つまり、関数から文字列が返されます。

  4. dotnet run プロジェクトを実行します。

    dotnet run
    

    もう一度、次の出力が表示されるはずです。

    Jack
    

おめでとうございます。 これで、型が追加されました。