共用方式為


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> 指定這個組件的目標框架設定檔。 有效值為 mscorlibnetcorenetstandard。 預設值為 mscorlib
--use:<filename> 告知解譯器在啟動時使用指定的檔案做為初始輸入。
--utf8output 與 fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項
--warn:<warning-level> fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項
--warnaserror[+|-] fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項
--warnaserror[+|-]:<int-list> fsc.exe 編譯器選項相同。 如需詳細資訊,請參閱編譯器選項

F# 互動結構化列印

F# 互動 (dotnet fsi) 使用結構化純文字格式的擴充版本來報告值。

  1. 支援 %A 純文字格式的所有特徵,有些還可另外自訂。

  2. 如果輸出主控台支援色彩,列印會標示色彩。

  3. 除非您明確評估該字串,否則會限制顯示字串的長度。

  4. 一組使用者可定義設定可透過 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

使用 AddPrinterAddPrintTransformer 自訂

您可以使用 fsi.AddPrinterfsi.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 可用的命令列選項。