2011-11-22 59 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是單元(())類型的一個參數的函數。 –