Exercício – Padrões de função

Concluído(a)

Neste exercício, concentre-se na aplicação de alguns dos padrões funcionais que foram ensinados. Trabalhe também no código escrito pelos seus colegas e combine-o com um operador de pipeline.

Criar um aplicativo

Como mencionado, seus colegas estavam ocupados escrevendo código. Aqui está:

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 

O código consiste em diferentes partes que ajudarão você a implementar um jogo de cartas. E qual é a tarefa? Sua tarefa é pegar um baralho de cartas, embaralhá-lo, pegar as três cartas superiores e depois imprimir os resultados.

  1. Crie um projeto com:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Substitua o código no arquivo Program.fs pelo código que você recebeu.

  3. Crie um pipeline adicionando a seguinte linha ao final:

    cards |> shuffle |> take 3 |> printAll
    

    Esse código chama as funções shuffle(), take() e printAll() em uma sequência da esquerda para a direita. Os resultados da saída variam porque o método shuffle() introduz um elemento aleatório.

  4. Execute o projeto chamando dotnet run.

    dotnet run
    

    Você verá três cartões sendo impressos com sua descrição e termo adequados. Aqui está uma saída de exemplo desse resultado:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

Parabéns! Você e sua equipe conseguiram criar o início de um aplicativo de cartas. Você também aplicou com sucesso um pipeline que permite que você chame funções em uma sequência que se aplicam a uma lista de cartas.