Gyakorlat – Függvényminták

Befejeződött

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.

  1. Hozzon létre egy új projektet a következőkkel:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Cserélje le a Program.fs fájlban lévő kódot a megadott kódra.

  3. Hozzon létre egy folyamatot a következő sor hozzáadásával a végén:

    cards |> shuffle |> take 3 |> printAll
    

    Ez a kód meghívja a függvényeket shuffle(), take()és printAll() egy sorrendben balról jobbra. A kimeneti eredmények eltérőek, mert a shuffle() metódus véletlenszerű elemet vezet be.

  4. Futtassa a projektet a dotnet run hívásával.

    dotnet run
    

    Lá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.