演習 - 関数のパターン

完了

この演習では、教わったいくつかの関数パターンを適用することに焦点を当てます。 また、同僚によって記述されたコードを処理し、パイプライン演算子で融合させます。

アプリを作成する

既に説明したように、同僚はコードの記述に追われています。 次のとおりです。

let cards = [21; 3; 1; 7; 9; 23]
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 suit card =
    let no = card / 13
    if no = 0 then "Hearts"
    elif no = 1 then "Spades"
    elif no = 2 then "Diamonds"
    else "Clubs"

let shuffle list =
    let random = System.Random()
    list |> List.sortBy (fun x -> random.Next())

let printCard card = printfn "%s of %s" (cardFace card) (suit card)

let printAll list = List.iter(fun x -> printCard(x)) list

let take (no:int) (list) = List.take no list 

このコードは、カード ゲームを実装するのに役立つさまざまな部分で構成されています。 では、何をすればいいでしょう。 あなたの仕事は、カードのデッキを受け取り、それをシャッフルし、上から 3 枚のカードを取って、結果を出力することです。

  1. 次を使用して新しいプロジェクトを作成します。

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Program.fs のコードを、指定されたコードに置き換えます。

  3. 末尾に次の行を追加して、パイプラインを作成します。

    cards |> shuffle |> take 3 |> printAll
    

    このコードは、関数 shuffle()take()printAll() を左から右に順番に呼び出します。 shuffle() メソッドによってランダムな要素が導入されるので、出力結果は変化します。

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

    dotnet run
    

    適切な説明とスーツが含まれた 3 枚のカードが出力されるのを確認できます。 出力例を次に示します。

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

おめでとうございます。 あなたとあなたのチームは、カード アプリケーションの開始部分を構築しました。 また、シーケンス内の関数を呼び出すパイプラインの適用も成功しました。そのすべてがカードの一覧に適用されます。