我遇到了解F#中括号用法的问题。举一个简单的例子说明,以下2个控制台应用程序的行为有很大不同。第一个不等我输入任何东西:
open System
let Main =
Console.WriteLine "Hello"
Console.ReadLine
而第二个的确如此:
open System
let Main =
Console.WriteLine "Hello"
Console.ReadLine()
我应该如何理解其中的差异?
答案 0 :(得分:10)
如果函数不带参数,则将单位值()指定为参数,如下面的代码行所示。
initializeApp()
函数名称本身只是一个函数值,因此如果省略表示单位值的括号,则仅引用该函数,而不是调用该函数。
http://msdn.microsoft.com/en-us/library/dd233229.aspx
这就是为什么你必须做Console.ReadLine()
而不是Console.ReadLine
(后者返回一个函数委托)