2011-11-22 48 views
6

我在理解F#中括号的用法时遇到了问题。为了用一个简单的例子来说明,以下两个控制台应用程序的行为非常不同。第一个不等待对我来说,任何类型:而第二个不F#中括号的用法

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

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

应该如何我明白有什么区别?

+1

同样的错误也是主力。它需要争论,否则它只是一种价值。它仍然运行的原因是值必须被评估,所以它恰好运行,但这样做仍然是错误的。通常你会有'args'作为参数,并且从main函数返回一个int作为退出代码。 –

回答

10

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

initializeApp() 

本身就是一个函数的名称仅仅是一个函数值,所以如果你省略表示单位价值括号,功能仅仅是参考,不叫。

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

这就是为什么你必须做Console.ReadLine()而非Console.ReadLine(后者返回函数代表)

+0

请注意,您可能会认为Console.ReadLine是单元(())类型的一个参数的函数。 –