F# 互動選項
本文說明 F# 互動 fsi.exe
支援的命令列選項。 F# 互動接受許多與 F# 編譯器相同的命令列選項,此外也接受一些其他選項。
使用 F# 互動進行指令碼處理
F# 互動 dotnet fsi
能以互動方式啟動,也可以從命令列啟動以執行指令碼。 命令列語法為
dotnet fsi [options] [ script-file [arguments] ]
F# 指令檔的副檔名為 .fsx
。
F# 互動選項的表格
下表摘要說明 F# 互動支援的選項。 您可以使用命令列或透過 Visual Studio IDE 設定這些選項。 若要在 Visual Studio IDE 中設定這些選項,請開啟 [工具] 功能表,選取 [選項],展開 [F# 工具] 節點,然後選取 [F# 互動]。
清單出現在 F# 互動選項引數中,清單元素以分號 (;
) 分隔。
選項 | 描述 |
---|---|
-- | 如需用來指示 F# 互動將其餘引數視為 F# 程式或指令碼的命令列引數,可以使用 fsi.CommandLineArgs 清單,在程式碼中取得。 |
--checked[+|-] | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--codepage:<int> | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--consolecolors[+|-] | 輸出彩色的警告和錯誤訊息。 |
**--compilertool:<extensionsfolder> | 參考包含設計階段工具的組件或目錄 (簡短形式: -t)。 |
--crossoptimize[+|-] | 啟用或停用跨模組最佳化。 |
--debug[+|-] --debug:[full|pdbonly|portable|embedded] -g[+|-] -g:[full|pdbonly|portable|embedded] |
與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--define:<string> | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--deterministic[+|-] | 產生確定性組件 (包括模組版本 GUID 及時間戳記)。 |
--exec | 指示 F# 互動在載入檔案或執行命令列上提供的指令檔之後結束。 |
--fullpaths | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--gui[+|-] | 啟用或停用 Windows Forms 事件迴圈。 預設值為 [已啟用]。 |
--help -? |
用來顯示命令列語法和每個選項的簡短描述。 |
--lib:<folder-list> -I:<folder-list> |
與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--load:<filename> | 在啟動時編譯指定的原始程式碼,並將編譯的 F# 建構載入工作階段中。 |
--mlcompatibility | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--noframework | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項 |
--nologo | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--nowarn:<warning-list> | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--optimize[+|-] | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--preferreduilang:<lang> | 指定慣用的輸出語言文化特性名稱 (例如 es-ES、ja-JP)。 |
--quiet | 隱藏 F# 互動對 stdout 資料流程的輸出。 |
--quotations-debug | 指定運算式衍生自 F# 引號常值和反映的定義時,應針對此情況發出額外偵錯資訊。 偵錯資訊會新增至 F# 運算式樹狀架構節點的自訂屬性。 請參閱程式碼引號和 Expr.CustomAttributes。 |
--readline[+|-] | 在互動模式中啟用或停用索引標籤完成功能。 |
--reference:<filename> -r:<filename> |
與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--tailcalls[+|-] | 啟用或停用使用 tail IL 指令,這會導致堆疊框架重複使用於尾遞迴函式。 此選項預設為啟用。 |
--targetprofile:<string> | 指定這個組件的目標框架設定檔。 有效值為 mscorlib 、netcore 或 netstandard 。 預設值為 mscorlib 。 |
--use:<filename> | 告知解譯器在啟動時使用指定的檔案做為初始輸入。 |
--utf8output | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--warn:<warning-level> | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--warnaserror[+|-] | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
--warnaserror[+|-]:<int-list> | 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項。 |
F# 互動結構化列印
F# 互動 (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# 互動中執行範例,便會根據設定的格式選項來輸出。 在此情況下,會影響日期和時間的格式:
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 可用的命令列選項。 |