F#如何正确地调用功能让? 在函数调用[ ]不工作(F# How to call let f

2019-10-23 00:35发布

我是新来的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 

Answer 1:

如果你想test是一个函数,其声明如下:

let test () =

...并这样称呼它:

test ()

甲函数总是接收一个参数,并返回一个值。 当你看到一个以上的参数,这些都是咖喱成一系列的每一个接收一个参数的函数。 这就是为什么你看到这样的签名int -> string -> string

如果你没有必要的参数,因为在这种情况下,您使用单位,由代表()



Answer 2:

test ,因为它写入不是函数-它是类型的值unit 。 你必须添加括号:

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

    printfn "%s" output

并调用它是这样的:

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


Answer 3:

test不是一个函数,它是一个变量,所以你不能把它。 你只能访问它的价值,这是() 访问一个值,而不做任何事的,不影响该计划的任何方式的行为,这就是为什么写test你的main功能有没有影响。

如果你想能够调用test ,你需要给它一个参数,使之成为功能。 既然你似乎并不真正想要的任何参数,你可以使用unit作为参数类型。 这将是这样的:

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

而相应的调用是这样的:

test ()


文章来源: F# How to call let function correctly? Function call in [] isn't working