通过


控制台应用程序

本文介绍如何构建 F# 控制台应用程序。

隐式入口点

默认情况下,F# 应用程序使用隐式入口点。 例如,对于以下程序,入口点是隐式的,当程序运行时,代码从第一行执行到最后一行:

open System

let printSomeText() =
    let text = "Hello" + "World"
    printfn $"text = {text}"

let showCommandLineArgs() =
    for arg in Environment.GetCommandLineArgs() do
        printfn $"arg = {arg}"

printSomeText()
showCommandLineArgs()
exit 100

显式入口点

如果需要,可以使用显式入口点。 这通常是出于以下一个或全部原因完成的:

  • 你更喜欢通过传递给函数的参数来访问命令行参数,而不是使用 System.Environment.GetCommandLineArgs()

  • 想要通过返回结果返回错误代码,而不是使用 exit

  • 你想要在控制台应用程序的最后一个文件中对代码进行单元测试。

以下示例演示了具有显式入口点的简单 main 函数。

[<EntryPoint>]
let main args =
    printfn "Arguments passed to function : %A" args
    // Return 0. This indicates success.
    0

使用命令行 EntryPoint.exe 1 2 3执行此代码时,输出如下所示。

Arguments passed to function : [|"1"; "2"; "3"|]

语法

[<EntryPoint>]
let-function-binding

注解

在前面的语法中, let-function-binding 是绑定中 let 函数的定义。

编译为可执行文件的程序的入口点是执行正式启动的位置。 通过将属性应用于 EntryPoint 程序的 main 函数,可以指定 F# 应用程序的入口点。 此函数(使用 let 绑定创建)必须是最后一个编译文件中的最后一个函数。 最后一个编译的文件是项目中的最后一个文件或传递到命令行的最后一个文件。

入口点函数具有类型 string array -> int。 命令行上提供的参数将 main 传递给字符串数组中的函数。 数组的第一个元素是第一个参数;该可执行文件的名称不包含在数组中,因为它在一些其他语言中。 返回值用作进程的退出代码。 零通常表示成功;非零值指示错误。 非零返回代码的特定含义没有约定;返回代码的含义特定于应用程序。

另请参阅