F# 互動是什麼?

已完成

有時候您不想要進行建立、封裝和散發應用程式的流程。 F# 互動是互動式程式設計和指令碼環境。 這可讓您透過主控台或獨立的指令碼檔案,以即時方式撰寫和評估程式碼,讓您輕鬆地從構思概念到建立程式碼。

開始使用 F# 互動

F# 互動內建於 .NET SDK 中。 您可以使用 .NET CLI dotnet fsi 命令來啟動。

dotnet fsi

讀取-評估-列印-迴圈 (REPL)

從開始 F# 互動會將您帶到讀取-評估-列印迴圈 (REPL) 工作階段,您可以在其中撰寫 F# 程式碼,並立即在主控台中評估其輸出。

Microsoft (R) F# Interactive version 11.4.2.0 for F# 5.0 
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

>

執行和評估運算式

若要評估您的輸入,您必須在 > 字元之後輸入其內容。

> #help;;

例如,如果執行 #help 命令,輸出會顯示 F# 互動說明功能表。

F# Interactive directives:

    #r "file.dll";;                               // Reference (dynamically load) the given DLL
    #i "package source uri";;                     // Include package source uri when searching for packages
    #I "path";;                                   // Add the given search path for referenced DLLs
    #load "file.fs" ...;;                         // Load the given file(s) as if compiled and referenced
    #time ["on"|"off"];;                          // Toggle timing on/off
    #help;;                                       // Display help
    #r "nuget:FSharp.Data, 3.1.2";;               // Load Nuget Package 'FSharp.Data' version '3.1.2'
    #r "nuget:FSharp.Data";;                      // Load Nuget Package 'FSharp.Data' with the highest version
    #quit;;                                       // Exit
    
F# Interactive command line options:

    See 'dotnet fsi --help' for options

運算式的結尾是以 ;; 字元分隔。 等到您輸入 ;; 字元之後,才會評估任何程式碼。 此結構在撰寫多行運算式時很有用,因為您的程式碼不會以新的行字元分隔。

評估 F# 程式碼是以相同方式運作。 下列程式碼會印出訊息到主況台。

> printfn "Hello World!";;

評估的輸出為:

Hello World!
val it : unit = ()

第一行顯示已評估程式碼的輸出,而第二行則顯示輸出的類型資訊。 在此情況下,主控台的值輸出是以 () 權杖表示並繫結至 it 名稱的型別 unit。 如果您想要執行更多作業,您可以稍後在程式中存取 it 值。

離開 REPL

使用 F# 互動 REPL 之後,請使用 #q#quit 命令來結束。

> #q;;

fsx 指令碼檔案

當您撰寫更多程式碼時,可以使用 fsx 副檔名將程式碼儲存在指令碼中。

如果您使用將訊息列印至主控台的相同範例,則可以建立名為 my-script.fsx 的檔案,以寫入您的程式碼。

printfn "Hello World!"

不過要注意的是,在 fsx 檔案中,不需要在運算式的結尾使用 ;;。 您不需要它,因為在指令碼檔案中,F# 互動可以使用標準 F# 程式碼格式設定方針,例如縮排和新行。

您可以只執行 dotnet fsi,並指定 F# 原始程式碼的指令碼檔案名稱,F# 互動就會即時讀取程式碼並執行程式碼,而不是編譯原始程式碼,然後稍後再執行已編譯的組件。

dotnet fsi my-script.fsx

執行此指令碼會產生下列輸出。

Hello World!