Esercizio - Modelli di funzione

Completato

In questo esercizio concentrarsi sull'applicazione di alcuni dei modelli di funzione appresi. Lavora anche sul codice scritto dai tuoi colleghi e uniscilo con un operatore di pipeline.

Crea un'app

Come già accennato, i colleghi si sono occupati della scrittura del codice. Ecco il risultato:

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 

Il codice è costituito da parti diverse che consentono di implementare un gioco di carte. In che cosa consiste l'attività da svolgere? L'attività consiste nel mischiare un mazzo di carte, prendere le prime tre carte e quindi stampare i risultati.

  1. Creare un nuovo progetto con:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Sostituire il codice nel file Program.fs con il codice specificato.

  3. Creare una pipeline aggiungendo la riga seguente alla fine:

    cards |> shuffle |> take 3 |> printAll
    

    Questo codice chiama le funzioni shuffle(), take() e printAll(), in sequenza da sinistra a destra. I risultati dell'output variano, perché il metodo shuffle() introduce un elemento casuale.

  4. Eseguire il progetto chiamando dotnet run.

    dotnet run
    

    Verranno visualizzate tre carte stampate con la descrizione e il seme corrispondenti. Ecco un esempio di come potrebbe apparire:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Complimenti. Insieme al team è stato scritto l'inizio di un'applicazione per un gioco di carte. Hai applicato con successo una pipeline che ti consente di chiamare funzioni in una sequenza, tutte applicate a un elenco di carte.