F#如何正确调用let函数? [<entrypoint>]中的函数调用不起作用

时间:2015-05-07 14:12:13

标签: .net visual-studio-2010 function f#

我是F#的新手。我要做的是多次拨打test打印Hello World。在此示例中,我想要调用test三次。当我运行代码时,它只打印到控制台一次。即使没有test调用,它也会运行。我有以下代码:

open System

let test =
    let mutable output = ""
    output <- "Hello World"

    printfn "%s" output

[<EntryPoint>]
let main argv = 
    test
    test
    test
    ignore(Console.ReadKey())
    0 

3 个答案:

答案 0 :(得分:2)

如果您希望test成为一个函数,请按以下方式声明:

let test () =

......并且这样称呼它:

test ()

函数总是接收一个参数并返回一个值。如果您看到多个参数,则会将这些参数调整为一系列函数,每个函数都接收一个参数。这就是您看到int -> string -> string等签名的原因。

如果您不需要参数,就像在这种情况下一样,您使用的单位由()表示。

答案 1 :(得分:1)

browserifyOptions: { 'list': true }因为它写的不是函数 - 它是test类型的值。你必须添加括号:

unit

并以这种方式称呼它:

let test () =
    let mutable output = ""
    output <- "Hello World"

    printfn "%s" output

答案 2 :(得分:0)

test不是函数,它是变量,所以你不能调用它。您只能访问其值()。访问值而不对其执行任何操作不会以任何方式影响程序的行为,这就是为什么在test函数中编写main无效。

如果您希望能够调用test,则需要通过为其提供参数来使其成为函数。由于您似乎并不想要任何参数,因此可以使用unit作为参数类型。这看起来像这样:

let test () =
    let mutable output = ""
    output <- "Hello World"
    printfn "%s" output

相应的调用将如下所示:

test ()