Cvičení – vzory funkcí

Dokončeno

V tomto cvičení se zaměřte na použití některých funkčních vzorů, které jste učili. Pracujte také na kódu, který napsali vaši kolegové, a zapojte ho společně s operátorem kanálu.

Vytvořit aplikaci

Jak už bylo zmíněno, vaši kolegové byli zaneprázdněni psaním kódu. Tady je:

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 

Kód se skládá z různých částí, které vám pomůžou implementovat hru karet. Co je to za úkol? Vaším úkolem je vzít balíček karet, prohazovat ho, vzít první tři karty a pak vytisknout výsledky.

  1. Vytvořte nový projekt pomocí:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Nahraďte kód v souboru Program.fs kódem, který jste dostali.

  3. Vytvořte kanál přidáním následujícího řádku na konec:

    cards |> shuffle |> take 3 |> printAll
    

    Tento kód volá funkce shuffle(), take()a printAll() v sekvenci zleva doprava. Výsledky výstupu shuffle() se liší, protože metoda zavádí náhodný prvek.

  4. Spusťte projekt voláním dotnet run.

    dotnet run
    

    Měli byste vidět, že se vytisknou tři karty se správným popisem a oblekem. Tady je příklad výstupu toho, jak může vypadat:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Gratulujeme! Ty a tvůj tým jste vytvořili začátek aplikace pro karty. Také jste úspěšně použili potrubí, které umožňuje volat funkce v sekvenci, přičemž všechny se vztahují na seznam karet.