练习 - 函数模式
本练习将重点应用所学的一些功能性模式。 以及处理同事编写的代码,并将其与管道运算符融合在一起。
创建应用
正如前面提到的,你的同事一直忙于编写代码。 如下所示:
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
代码由不同的部分组成,可帮助你开发纸牌游戏。 那么,任务是什么? 你的任务是拿一副牌,洗牌,取上面三张纸牌,然后打印结果。
使用以下代码创建新项目:
dotnet new console --language F# -o Cards cd Cards将 Program.fs 文件中的代码替换为提供给你的代码。
在末尾添加以下行,创建管道:
cards |> shuffle |> take 3 |> printAll此代码按从左到右的顺序调用函数
shuffle()、take()和printAll()。 由于shuffle()方法引入了一个随机元素,因此输出结果会有所不同。通过调用
dotnet run运行项目。dotnet run你应该看到三张纸牌印有正确的描述和花色。 下面是你可能看到的输出示例:
Ace of Hearts 9 of Hearts 7 of Hearts
祝贺你! 你和你的团队已构建了一个纸牌应用程序的开始部分。 你也已经成功应用了一个管道,通过该管道可以按顺序调用函数,所有这些函数都将应用于一系列纸牌。