Ćwiczenie — wzorce funkcji
W tym ćwiczeniu skoncentruj się na zastosowaniu niektórych wzorców funkcjonalnych, które zostały nauczone. Ponadto należy pracować nad kodem napisanym przez współpracowników i połączyć go razem z operatorem potoku.
Utwórz aplikację
Jak wspomniano, twoi współpracownicy byli zajęci pisaniem kodu. Oto:
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
Kod składa się z różnych części, które ułatwiają implementowanie gry kartowej. Więc jakie jest zadanie? Twoim zadaniem jest przetasować talii kart, przetasować je, pobrać trzy pierwsze karty, a następnie wydrukować wyniki.
Utwórz nowy projekt przy użyciu:
dotnet new console --language F# -o Cards cd CardsZastąp kod w pliku Program.fs podanym kodem.
Utwórz potok, dodając następujący wiersz na końcu:
cards |> shuffle |> take 3 |> printAllTen kod wywołuje funkcje
shuffle(),take()iprintAll()w sekwencji od lewej do prawej. Wyniki wyjściowe różnią się, ponieważshuffle()metoda wprowadza element losowy.Uruchom projekt, wywołując polecenie
dotnet run.dotnet runPowinny zostać wyświetlone trzy karty z odpowiednim opisem i dopasowaniem. Oto przykładowe dane wyjściowe tego, jak może wyglądać:
Ace of Hearts 9 of Hearts 7 of Hearts
Gratulacje! Ty i Twój zespół utworzyli początek aplikacji karty. Pomyślnie zastosowano również potok, który umożliwia wywoływanie funkcji w sekwencji, z których wszystkie mają zastosowanie do listy kart.