Øvelse – funktionsmønstre
I denne øvelse skal du fokusere på at anvende nogle af de funktionelle mønstre, du blev undervist i. Du kan også arbejde på den kode, der er skrevet af dine kolleger, og sammensmelte den med en pipelineoperator.
Opret en app
Som nævnt har dine kolleger haft travlt med at skrive kode. Her er det:
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
Koden består af forskellige dele, der hjælper dig med at implementere et kortspil. Så hvad er opgaven? Din opgave er at tage et sæt kort, blande det, tage de tre øverste kort og derefter udskrive resultaterne.
Opret et nyt projekt med:
dotnet new console --language F# -o Cards cd CardsErstat koden i filen Program.fs med den kode, du har fået.
Opret en pipeline ved at tilføje følgende linje i slutningen:
cards |> shuffle |> take 3 |> printAllDenne kode kalder funktionerne
shuffle(),take()ogprintAll()i en sekvens fra venstre mod højre. Outputresultaterne varierer, fordi metodenshuffle()introducerer et tilfældigt element.Kør projektet ved at kalde
dotnet run.dotnet runDu bør kunne se, at tre kort udskrives med deres korrekte beskrivelse og dragt. Her er et eksempel på, hvordan det kan se ud:
Ace of Hearts 9 of Hearts 7 of Hearts
Tillykke! Du og dit team har bygget starten på et kortprogram. Du har også anvendt en pipeline, der giver dig mulighed for at kalde funktioner i en sekvens, som alle gælder for en liste over kort.