练习 - 函数模式

已完成

本练习将重点应用所学的一些功能性模式。 以及处理同事编写的代码,并将其与管道运算符融合在一起。

创建应用

正如前面提到的,你的同事一直忙于编写代码。 如下所示:

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 

代码由不同的部分组成,可帮助你开发纸牌游戏。 那么,任务是什么? 你的任务是拿一副牌,洗牌,取上面三张纸牌,然后打印结果。

  1. 使用以下代码创建新项目:

    dotnet new console --language F# -o Cards
    cd Cards
    
  2. Program.fs 文件中的代码替换为提供给你的代码。

  3. 在末尾添加以下行,创建管道:

    cards |> shuffle |> take 3 |> printAll
    

    此代码按从左到右的顺序调用函数 shuffle()take()printAll()。 由于 shuffle() 方法引入了一个随机元素,因此输出结果会有所不同。

  4. 通过调用 dotnet run 运行项目。

    dotnet run
    

    你应该看到三张纸牌印有正确的描述和花色。 下面是你可能看到的输出示例:

    Ace of Hearts
    9 of Hearts
    7 of Hearts
    

祝贺你! 你和你的团队已构建了一个纸牌应用程序的开始部分。 你也已经成功应用了一个管道,通过该管道可以按顺序调用函数,所有这些函数都将应用于一系列纸牌。