F# Interactive (fsi.exe) 參考
您可以在主控台上使用 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# 互動的選項和互動式 64 位元 F# 所關切的只有當您正在執行 F# 互動式 64 位元電腦上的設定。此設定可決定您是否要執行 fsi.exe 或 fsianycpu.exe,來決定是否要執行以 32 位元或 64 位元處理序會使用電腦架構的專用的 64 位元版本。
使用 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 (fsi.exe) 的命令列語法和選項。 |
|
描述在 F# Interactive 中執行程式碼時可用的程式庫功能。 |