F# 互動式選項
本文說明 F# Interactive 支援的命令行選項,fsi.exe
。 F# Interactive 接受許多與 F# 編譯程式相同的命令行選項,但也接受一些其他選項。
使用 F# Interactive 進行腳本處理
F# Interactive,dotnet fsi
,可以互動方式啟動,也可以從命令行啟動以執行腳本。 命令行語法為
dotnet fsi [options] [ script-file [arguments] ]
F# 文稿檔案的擴展名 .fsx
。
F# 互動選項表格
下表摘要說明 F# Interactive 支援的選項。 您可以在命令行上或透過 Visual Studio IDE 設定這些選項。 若要在 Visual Studio IDE 中設定這些選項,請開啟 [工具] 功能表,選取 [[選項],展開 [F# 工具] 節點,然後選取 [F# Interactive]。
其中清單出現在 F# Interactive 選項自變數中,清單元素會以分號分隔(;
)。
選擇 | 描述 |
---|---|
-- | 用來指示 F# Interactive 將其餘自變數視為 F# 程式或腳本的命令行自變數,您可以使用清單 fsi 來存取程式代碼。CommandLineArgs。 |
--checked[+|-] | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--checknulls[+|-] | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--codepage:<int> | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--consolecolors[+|-] | 以色彩輸出警告和錯誤訊息。 |
**--compilertool:<extensionsfolder> | 參考包含設計時間工具的元件或目錄(簡短形式:-t)。 |
--crossoptimize[+|-] | 啟用或停用跨模組優化。 |
--debug[+|-] --debug:[完整|pdbonly|可攜式|內嵌] -g[+|-] -g:[完整|pdbonly|可攜式|內嵌] |
與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--define:<字串> | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--deterministic[+|-] | 產生具決定性的組件(包括模組版本 GUID 和時間戳)。 |
--exec | 指示 F# 互動式在載入檔案或執行命令行上提供的腳本檔案之後結束。 |
--fullpaths | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--gui[+|-] | 啟用或停用 Windows Forms 事件迴圈。 預設值為啟用。 |
--help -? |
用來顯示命令列語法和每個選項的簡短描述。 |
--lib:<folder-list> -I:<資料夾清單> |
與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--load:<檔名> | 在啟動時編譯指定的原始程式碼,並將編譯的 F# 建構載入工作階段。 |
--mlcompatibility | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--noframework | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項 |
--nologo | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--nowarn:<warning-list> | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--optimize[+|-] | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--preferreduilang:<lang> | 指定慣用的輸出語言文化特性名稱(例如,es-ES、ja-JP)。 |
--靜音 | 隱藏 F# Interactive 對 stdout 數據流的輸出。 |
--quotations-debug | 指定應該針對來自 F# 語言的引用文常數及反射定義的表達式發出額外的偵錯資訊。 偵錯資訊被新增到 F# 運算式樹節點的自訂屬性中。 請參閱 程式代碼引號 和 Expr.CustomAttributes。 |
--readline[+|-] | 在互動式模式中啟用或停用索引標籤自動完成。 |
--reference:<檔名> -r:<檔名> |
與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--tailcalls[+|-] | 啟用或停用 tail IL 指令的使用,此指令會導致堆疊框架被重複使用於尾遞迴函式。 此選項預設為啟用。 |
--targetprofile:<字串> | 指定這個元件的目標框架設定檔。 有效值為 mscorlib 、netcore 或 netstandard 。 預設值為 mscorlib 。 |
--use:<檔名> | 告知解釋器在啟動時使用指定的檔案做為初始輸入。 |
--utf8output | 與 fsc.exe 編譯程序選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--warn:<警告層級> | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--warnaserror[+|-] | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
--warnaserror[+|-]:<int-list> | 與 fsc.exe 編譯程式選項相同。 如需詳細資訊,請參閱 編譯程式選項。 |
F# 互動式結構化列印
F# Interactive (dotnet fsi
) 會使用擴充版本的 結構化純文本格式設定, 來報告值。
支援
%A
純文字格式設定的所有功能,有些則另外可自定義。如果輸出主控台支援色彩,列印會標示色彩。
除非您明確評估該字串,否則會限制顯示的字串長度。
用戶可定義設定集可透過
fsi
物件取得。
自訂報告值純文字列印的可用設定如下:
open System.Globalization
fsi.FormatProvider <- CultureInfo("de-DE") // control the default culture for primitives
fsi.PrintWidth <- 120 // Control the width used for structured printing
fsi.PrintDepth <- 10 // Control the maximum depth of nested printing
fsi.PrintLength <- 10 // Control the length of lists and arrays
fsi.PrintSize <- 100 // Control the maximum overall object count
fsi.ShowProperties <- false // Control whether properties of .NET objects are shown by default
fsi.ShowIEnumerable <- false // Control whether sequence values are expanded by default
fsi.ShowDeclarationValues <- false // Control whether values are shown for declaration outputs
使用 AddPrinter
和 AddPrintTransformer
自定義
使用 fsi.AddPrinter
和 fsi.AddPrintTransformer
可以自訂 F# 互動式輸出的列印。
第一個函式會提供文字來取代物件的列印。 第二個函式會傳回替代顯示用的代理物件。 例如,請考慮下列 F# 程式代碼:
open System
fsi.AddPrinter<DateTime>(fun dt -> dt.ToString("s"))
type DateAndLabel =
{ Date: DateTime
Label: string }
let newYearsDay1999 =
{ Date = DateTime(1999, 1, 1)
Label = "New Year" }
如果您在 F# Interactive 中執行範例,它會根據格式化選項集來輸出。 在此情況下,它會影響日期和時間的格式:
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
可用來提供列印用的替代物件:
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
此輸出:
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
如果傳遞至 fsi.AddPrintTransformer
的轉換器函式傳回 null
,則會忽略列印轉換器。
這可用來從類型 obj
開始篩選任何輸入值。 例如:
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
此輸出:
val y : string = ["quack"; "quack"; "quack"]
相關主題
標題 | 描述 |
---|---|
編譯程序選項 | 描述 F# 編譯程式可用的命令列選項,fsc.exe。 |