2011-11-22 33 views
6

Tôi gặp sự cố khi hiểu cách sử dụng dấu ngoặc đơn trong F #. Để minh họa bằng một ví dụ đơn giản, 2 ứng dụng giao diện điều khiển sau hoạt động rất khác nhau. Người đầu tiên không đợi cho tôi để gõ vào bất cứ điều gì:Cách sử dụng dấu ngoặc đơn trong F #

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

Trong khi một giây không:

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

Làm thế nào nên tôi hiểu sự khác biệt?

+1

Sai lầm tương tự cũng đang trong Main. Nó cần các đối số, nếu không nó chỉ là một giá trị. Lý do nó vẫn chạy, là giá trị phải được đánh giá, vì vậy nó chỉ xảy ra để chạy, nhưng nó vẫn sai để làm điều đó theo cách này. Bình thường, bạn sẽ có 'args' làm đối số, và trả về một int làm mã thoát từ hàm main. –

Trả lời

10

Nếu hàm không có tham số, bạn chỉ định giá trị đơn vị() làm đối số, như trong dòng mã sau đây.

initializeApp() 

Tên của hàm tự nó chỉ là giá trị hàm, vì vậy nếu bạn bỏ qua dấu ngoặc đơn cho biết giá trị đơn vị, hàm này chỉ được tham chiếu, không được gọi.

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

Đó là lý do tại sao bạn phải làm Console.ReadLine() hơn Console.ReadLine (trở về sau một chức năng đại biểu)

+0

Lưu ý rằng bạn cũng có thể đọc Console.ReadLine như là một hàm của một tham số thuộc loại đơn vị (()). –

Các vấn đề liên quan