練習 - 函式

已完成

在此練習中,您使程式碼可重複使用。 該程式碼是小組中另一個程式設計師所撰寫,但您的工作是將其轉換成函式。

建立函數

開始對新的 F# 專案進行 Scaffolding,然後將一段程式碼轉換成具有參數的函式。

  1. 執行 dotnet new 以建立新的 F# 專案。

    dotnet new console --language F# -o Functions
    cd Functions
    

    現在您有了新專案,讓我們來看看程式碼。

    以下是您同事的程式碼。

    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
    
  2. 用以下程式碼替換 Program.fs 檔案中的預設程式碼:

    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 cardFace card 的第一段會使其成為函式。 其現在是名為 cardface() 的函式,並接受 card 參數。

  3. cardface() 函式下方新增以下程式碼。

    printfn "%s" (cardFace 11)
    
  4. 在主控台中呼叫 dotnet run 來執行專案。

    dotnet run
    

    您現在會看到下列輸出:

    Jack
    

恭喜! 您已取得您想讓其可重複使用的一段程式碼,並將其轉換成函式。

新增型別

您已將同事的程式碼轉換成函式。 為了讓此程式碼更容易閱讀,您決定在其中新增型別定義。

  1. 修改您的現有函式 cardface(),使看起來像下面這樣:

    let cardFace (card:int) = 
        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
    
  2. 現在執行 dotnet run 專案。

    dotnet run
    

    您現在會看到下列輸出:

    Jack
    

    程式碼仍然有效,並且透過向輸入參數新增類型使其更加清晰。

  3. 將您的 cardface() 函式更改為像下面這樣:

    let cardFace (card:int) :string = 
        let no = card % 13
        if no = 14 || no = 1 then "Ace"
        elif no = 13 then "King"
        elif no = 12 then "Queen"
        elif no = 11 then "Jack"
        else string no
    

    至此,您已將傳回型別新增至函式 :string,這表示函式會傳回字串。

  4. 執行 dotnet run 專案。

    dotnet run
    

    您應該會再次看見下列輸出:

    Jack
    

恭喜! 您的程式碼現在已新增型別。