共用方式為


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

F# 互動式結構化列印

F# Interactive (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# 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