在F#中使用括号

Mat*_*ias 6 f#

我在理解F#中括号的用法时遇到了问题.举一个简单的例子说明,以下2个控制台应用程序的行为有很大不同.第一个不等我输入任何东西:

open System
let Main =
   Console.WriteLine "Hello"
   Console.ReadLine
Run Code Online (Sandbox Code Playgroud)

而第二个做的是:

open System
let Main =
   Console.WriteLine "Hello"
   Console.ReadLine()
Run Code Online (Sandbox Code Playgroud)

我该如何理解其中的区别?

man*_*lds 10

如果函数不带参数,则将单位值()指定为参数,如下面的代码行所示.

initializeApp()
Run Code Online (Sandbox Code Playgroud)

函数名称本身只是一个函数值,因此如果省略表示单位值的括号,则仅引用该函数,而不调用该函数.

http://msdn.microsoft.com/en-us/library/dd233229.aspx

这就是为什么你必须做Console.ReadLine()而不是Console.ReadLine(后者返回一个函数委托)