Oefening: functiepatronen

Voltooid

In deze oefening richt u zich op het toepassen van enkele functionele patronen die u hebt geleerd. Werk ook aan de code die door uw collega's is geschreven en combineer deze samen met een pijplijnoperator.

Een app maken

Zoals vermeld, zijn uw collega's bezig geweest met het schrijven van code. Hier is het:

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 

De code bestaat uit verschillende onderdelen waarmee u een kaartspel kunt implementeren. Wat is de taak? Uw taak is om een stapel kaarten te nemen, de kaarten te schudden, de bovenste drie kaarten te nemen en vervolgens de resultaten af te drukken.

  1. Maak een nieuw project met:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Vervang de code in het bestand Program.fs door de code die u hebt gekregen.

  3. Maak een pijplijn door de volgende regel aan het einde toe te voegen:

    cards |> shuffle |> take 3 |> printAll
    

    Met deze code worden de functies shuffle()aanroepen, take()en printAll() in een reeks van links naar rechts. De uitvoerresultaten variƫren omdat de shuffle() methode een willekeurig element introduceert.

  4. Voer het project uit door aan te roepen dotnet run.

    dotnet run
    

    U moet zien dat er drie kaarten worden geprint met hun juiste beschrijving en kleur. Hier is een voorbeeld van hoe de uitvoer eruit kan zien.

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Gefeliciteerd Je en je team hebben het begin van een kaarttoepassing ontwikkeld. U hebt ook een pijplijn toegepast waarmee u functies in een reeks kunt aanroepen, die allemaal van toepassing zijn op een lijst met kaarten.