Gyakorlat – Függvényminták
Ebben a gyakorlatban a tanult funkcionális minták némelyikének alkalmazására összpontosítson. Emellett dolgozzon a munkatársak által írt kódon, és kapcsolja össze egy folyamatkezelővel.
Alkalmazás létrehozása
Ahogy már említettük, munkatársai már dolgoztak a kód írásán. Itt van:
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
A kód különböző részekből áll, amelyek segítenek a kártyajáték megvalósításában. Szóval, mi a feladat? A feladat az, hogy vegyél egy kártyapaklit, keverd meg, vedd ki az első három kártyát, majd nyomtasd ki az eredményeket.
Hozzon létre egy új projektet a következőkkel:
dotnet new console --language F# -o Cards cd CardsCserélje le a Program.fs fájlban lévő kódot a megadott kódra.
Hozzon létre egy folyamatot a következő sor hozzáadásával a végén:
cards |> shuffle |> take 3 |> printAllEz a kód meghívja a függvényeket
shuffle(),take()ésprintAll()egy sorrendben balról jobbra. A kimeneti eredmények eltérőek, mert ashuffle()metódus véletlenszerű elemet vezet be.Futtassa a projektet a
dotnet runhívásával.dotnet runLátnod kell, ahogy három kártya kinyomtatódik a megfelelő leírással és színnel. Íme egy példa arra, hogy hogyan nézhet ki:
Ace of Hearts 9 of Hearts 7 of Hearts
Gratulálunk! Ön és csapata elkészítette egy kártyaalkalmazás kezdetét. Sikeresen alkalmazott egy folyamatsort is, amellyel szekvenciálisan függvényeket hívhat meg, amelyek mindegyike a kártyák listájára vonatkozik.