Ejercicio: patrones de función
En este ejercicio, céntrese en aplicar algunos de los patrones funcionales que se han enseñado. Asimismo, trabaje con el código escrito por los compañeros y fusiónelo por completo con un operador de canalización.
Creación de una aplicación
Como ya hemos dicho, nuestros compañeros han estado ocupados escribiendo código. Este es:
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
Este código se compone de diferentes partes que sirven para implementar un juego de naipes. Vale. ¿Qué hay que hacer? Lo que tenemos que hacer es tomar una baraja de naipes, barajarla, repartir los tres primeros naipes y, luego, imprimir los resultados.
Cree un proyecto con lo siguiente:
dotnet new console --language F# -o Cards cd CardsReemplace el código del archivo Program.fs con el código que se le ha proporcionado.
Cree una canalización agregando la siguiente línea al final:
cards |> shuffle |> take 3 |> printAllEste código llama a las funciones
shuffle(),take()yprintAll()en una secuencia de izquierda a derecha. Los resultados de salida varían, ya que el métodoshuffle()introduce un elemento aleatorio.Para ejecutar el proyecto, llame a
dotnet run.dotnet runDeberían aparecer tres naipes con la descripción y el palo adecuados. Esta es una salida de ejemplo del aspecto que puede tener:
Ace of Hearts 9 of Hearts 7 of Hearts
Enhorabuena. Junto con nuestro equipo, hemos logrado crear el inicio de una aplicación de juego de naipes. También hemos usado correctamente una canalización que permite llamar funciones en secuencia, todas ellas aplicables a una lista de naipes.