在F#中使用括号

时间:2011-11-22 06:16:15

标签: f#

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

open System
let Main =
   Console.WriteLine "Hello"
   Console.ReadLine

而第二个的确如此:

open System
let Main =
   Console.WriteLine "Hello"
   Console.ReadLine()

我应该如何理解其中的差异?

1 个答案:

答案 0 :(得分:10)

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

initializeApp()

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

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

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