共用方式為


F# Interactive (fsi.exe) 參考

更新:2010 年 10 月

您可以在主控台上使用 F# Interactive (fsi.exe) 以互動方式執行 F# 程式碼,或是執行 F# 指令碼。 換句話說,F# Interactive 會執行 F# 語言的 REPL (讀取、評估和列印迴圈 (Read, Evaluate, Print Loop))。

使用 F# 進行互動式程式設計

您可以在主控台或 Visual Studio 的視窗中使用 F# Interactive 撰寫程式碼。

若要從主控台執行 F# Interactive,請執行 fsi.exe。 如需可用命令列選項的詳細資訊,請參閱 F# Interactive 選項

若要透過 Visual Studio 2010 執行 F# Interactive,您可以按一下標記為 [F# Interactive] 的適當工具列按鈕,或使用按鍵 Ctrl+Alt+F。 這樣做會開啟互動式視窗,此互動式視窗是執行 F# Interactive 工作階段的工具視窗。 您也可以選取想要在互動式視窗中執行的某個程式碼,然後按下按鍵組合 ALT+ENTER。 F# 互動程式 (F# Interactive) 會在標記為 [F# Interactive] 的工具視窗中啟動。

不論是使用主控台還是否 Visual Studio 2010,命令提示字元都會出現,表示解譯器在等待您輸入。 您可以輸入程式碼,如同在程式碼檔案中輸入一樣。 若要編譯程式碼,請輸入兩個分號 (;;) 來結束一行或數行輸入。

F# Interactive 會嘗試編譯程式碼,如果編譯成功,就會執行程式碼並列印所編譯型別及數值的簽章。 如果發生錯誤,解譯器會列印錯誤訊息。

相同工作階段中輸入的程式碼可以存取先前輸入的任何建構,因此您可以建置程式。 需要時,工具視窗中的大量緩衝區可讓您將程式碼複製到檔案中。

在 Visual Studio 中執行時,F# Interactive 會獨立於專案之外執行,例如,除非您將函式的程式碼複製到互動式視窗,否則無法於 F# Interactive 內使用專案中定義的建構。

您可以藉由調整設定控制 F# Interactive 命令列引數 (選項)。 在 [工具] 功能表上,選取 [選項...],然後展開 [F# 工具]。 您可以變更的兩項設定為 F# Interactive 選項和 fsi.exe 可執行檔的路徑,如果您擁有的 fsi.exe 版本所屬的 F# 版本與您想要執行的版本不同,則可以使用這兩項設定。

使用 F# 撰寫指令碼

指令碼的副檔名為 .fsx 或 .fsscript。 除了編譯原始程式碼並於稍後再執行編譯的組件以外,您也可以只是執行 fsi.exe 並指定 F# 原始程式碼的指令碼檔名,F# Interactive 便會讀取並即時執行程式碼。

互動環境、指令碼環境和編譯環境之間的差異

在 F# Interactive 中編譯程式碼時,不論您是以互動方式執行還是執行指令碼,都會定義符號 INTERACTIVE。 在編譯器中編譯程式碼時,則會定義符號 COMPILED。 因此,如果程式碼在編譯模式與在互動模式下必須不一樣,您可以使用前置處理器指示詞執行條件式編譯,決定要使用哪一個模式。

某些指示詞可以在 F# Interactive 中執行指令碼時使用,但無法在執行編譯器時使用, 下表摘要說明使用 F# Interactive 時可用的指示詞。

指示詞

描述

#help

顯示可用指示詞的相關資訊。

#I

指定用引號括住的組件搜尋路徑。

#load

讀取原始程式檔、進行編譯,並且執行該檔案。

#quit

結束 F# Interactive 工作階段。

#r

參考組件。

#time ["on"|"off"]

#time 會自行切換是否顯示效能資訊。 如果啟用,則 F# Interactive 會計算每個已解譯且執行之程式碼區段的實際時間、CPU 時間和記憶體回收資訊。

您在 F# Interactive 中指定檔案或路徑時,必須使用字串常值。 因此,檔案和路徑必須用引號括起,而且會套用一般逸出字元。 另外,您也可以使用 @ 字元使 F# Interactive 將包含路徑的字串解譯為逐字字串。 這樣會讓 F# Interactive 忽略任何逸出字元。

編譯和互動模式之間其中一個差異,就是存取命令列引數的方式。 在編譯模式中是使用 GetCommandLineArgs; 而在指令碼中則是使用 fsi.CommandLineArgs。

下列程式碼說明如何在指令碼中建立讀取命令列引數的函式,同時也示範如何從指令碼中參考其他組件。 第一個程式碼檔 MyAssembly.fs 是要參考之組件的程式碼。 請使用命令列 fsc -a MyAssembly.fs 編譯此檔案,然後使用命令列 fsi --exec file1.fsx test 將第二個檔案當做指令碼執行。

// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y

// file1.fsx
#r "MyAssembly.dll"

printfn "Command line arguments: "

for arg in fsi.CommandLineArgs do
    printfn "%s" arg

printfn "%A" (MyAssembly.myFunction 10 40)

其輸出如下:

file1.fsx
test
60

相關主題

標題

描述

F# Interactive 選項

描述 F# Interactive (fsi.exe) 的命令列語法和選項。

F# Interactive 程式庫參考

描述在 F# Interactive 中執行程式碼時可用的程式庫功能。

變更記錄

日期

記錄

原因

2010 年 10 月

已加入支援的指示詞表。

資訊加強。