Oefening: functiepatronen
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.
Maak een nieuw project met:
dotnet new console --language F# -o Cards cd CardsVervang de code in het bestand Program.fs door de code die u hebt gekregen.
Maak een pijplijn door de volgende regel aan het einde toe te voegen:
cards |> shuffle |> take 3 |> printAllMet deze code worden de functies
shuffle()aanroepen,take()enprintAll()in een reeks van links naar rechts. De uitvoerresultaten variƫren omdat deshuffle()methode een willekeurig element introduceert.Voer het project uit door aan te roepen
dotnet run.dotnet runU 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.