Übung: Funktionsmuster

Abgeschlossen

In dieser Übung konzentrieren Sie sich auf die Anwendung einiger der Funktionsmuster, die Sie gelernt haben. Ferner arbeiten Sie an dem Code, der von Ihren Kolleg*innen geschrieben wurde, und verbinden ihn mit einem Pipelineoperator zu einer Einheit.

Erstellen einer App

Wie bereits erwähnt, waren Ihre Kollegen damit beschäftigt, Code zu schreiben. Dies ist er:

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 

Der Code besteht aus verschiedenen Teilen, die Sie bei der Implementierung eines Kartenspiels unterstützen. Worin besteht also Ihre Aufgabe? Ihre Aufgabe besteht darin, einen Kartenstapel zu wählen, ihn zu mischen, die obersten drei Karten abzuheben und dann die Ergebnisse auszugeben.

  1. Erstellen Sie ein neues Projekt:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Ersetzen Sie den Code in der Datei Program.fs durch den hier vorliegenden Code.

  3. Erstellen Sie eine Pipeline, indem Sie am Ende die folgende Zeile hinzufügen:

    cards |> shuffle |> take 3 |> printAll
    

    Dieser Code ruft die Funktionen shuffle(), take() und printAll() von links nach rechts auf. Die Ausgabeergebnisse variieren, da die Methode shuffle() ein Zufallselement einführt.

  4. Führen Sie das Projekt aus, indem Sie dotnet run aufrufen.

    dotnet run
    

    Es sollten drei Karten mit der richtigen Beschreibung und Farbe ausgegeben werden. Hier sehen Sie eine Beispielausgabe:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Herzlichen Glückwunsch! Sie und Ihr Team haben den Anfang einer Kartenanwendung entwickelt. Sie haben auch erfolgreich eine Pipeline angewendet, mit der Sie Funktionen sequenziell aufrufen können, die alle für eine Liste von Karten gelten.