什么是 F# 交互窗口?

已完成

有时,不想要浏览创建、打包和分发应用程序的过程。 F# 交互窗口是一种交互式编程和脚本环境。 通过在控制台或独立脚本文件中实时编写和评估代码来轻松地将想法变成代码。

启动 F# 交互窗口

F# 交互窗口内置于 .NET SDK 中。 可以使用 .NET CLI dotnet fsi 命令启动它。

dotnet fsi

Read-Evaluate-Print-Loop (REPL)

打开 F# 交互窗口会启动 read-evaluate-print-loop (REPL) 会话,在会话中你可以编写 F# 代码并立即在控制台中评估其输出。

Microsoft (R) F# Interactive version 11.4.2.0 for F# 5.0 
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

>

运行和评估表达式

若要评估输入,必须在 > 字符后输入。

> #help;;

例如,如果运行 #help 命令,输出将显示 F# 交互窗口帮助菜单。

F# Interactive directives:

    #r "file.dll";;                               // Reference (dynamically load) the given DLL
    #i "package source uri";;                     // Include package source uri when searching for packages
    #I "path";;                                   // Add the given search path for referenced DLLs
    #load "file.fs" ...;;                         // Load the given file(s) as if compiled and referenced
    #time ["on"|"off"];;                          // Toggle timing on/off
    #help;;                                       // Display help
    #r "nuget:FSharp.Data, 3.1.2";;               // Load Nuget Package 'FSharp.Data' version '3.1.2'
    #r "nuget:FSharp.Data";;                      // Load Nuget Package 'FSharp.Data' with the highest version
    #quit;;                                       // Exit
    
F# Interactive command line options:

    See 'dotnet fsi --help' for options

表达式的末尾由 ;; 字符分隔。 在输入 ;; 字符前,不会评估任何代码。 此结构在编写多行表达式时会很有用,因为代码不是由换行符分隔。

评估 F# 代码的工作原理相同。 以下代码将消息输出到控制台。

> printfn "Hello World!";;

评估的输出为:

Hello World!
val it : unit = ()

第一行显示已评估代码的输出,第二行显示输出的类型信息。 这种情况下,输出到控制台的值的类型为 unit,该类型由 () 标记表示并绑定到 it 名称。 如果要执行更多操作,可以稍后在程序中访问 it 值。

退出 REPL

使用 F# 交互窗口 REPL 后,请使用 #q#quit 命令退出。

> #q;;

fsx 脚本文件

编写更多代码时,可以通过 fsx 文件扩展在脚本中保存代码。

如果借助将消息输出到控制台的相同示例,可以创建名为 my-script.fsx 的文件来写入代码。

printfn "Hello World!"

但要注意的是,在 fsx 文件中,不需要在表达式的末尾使用 ;;。 不需要它是因为,在脚本文件中,F# 交互窗口可以使用标准 F# 代码格式设置准则,如缩进和换行。

与其编译源代码然后运行编译的程序集,你可以仅运行 dotnet fsi 并指定包含 F# 代码的脚本文件的名称,F# 交互窗口会读取代码并实时执行代码。

dotnet fsi my-script.fsx

运行该脚本会生成以下输出。

Hello World!