F #

2011-11-22 15 views
6

में ब्रांड्स का उपयोग मुझे F # में ब्रांड्स के उपयोग को समझने में कोई समस्या है। एक साधारण उदाहरण के साथ उदाहरण के लिए, 2 निम्नलिखित कंसोल ऐप्स बहुत अलग व्यवहार करते हैं।F #

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

जबकि दूसरा एक करता है::

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

मैं कैसे अंतर समझना चाहिए मुझे कुछ भी टाइप करने के लिए के लिए पहले एक के लिए इंतजार नहीं करता है?

+1

वही गलती मुख्य में भी है क्या करना है। इसे तर्क की आवश्यकता है, अन्यथा यह सिर्फ एक मूल्य है। कारण यह अभी भी चलता है, यह है कि मूल्य का मूल्यांकन किया जाना चाहिए, इसलिए यह दौड़ने के लिए होता है, लेकिन यह अभी भी ऐसा करना गलत है। आम तौर पर आपके पास तर्क के रूप में 'args' होगा, और मुख्य कार्य से निकास कोड के रूप में एक int वापस करें। –

उत्तर

10

यदि कोई फ़ंक्शन कोई पैरामीटर नहीं लेता है, तो आप इकाई मान() को तर्क के रूप में निर्दिष्ट करते हैं, जैसा कि कोड की निम्न पंक्ति में है।

initializeApp() 

अपने आप में एक समारोह के नाम पर सिर्फ एक समारोह मूल्य है, इसलिए यदि आप कोष्ठकों कि यूनिट मूल्य से संकेत मिलता है छोड़ देते हैं, समारोह केवल, संदर्भित नहीं कहा जाता है।

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

यही कारण है कि आप Console.ReadLine() बजाय Console.ReadLine (उत्तरार्द्ध रिटर्न एक समारोह प्रतिनिधि)

+0

ध्यान दें कि आप कंसोल भी पढ़ सकते हैं। रीडलाइन एक पैरामीटर का एक कार्य होने के रूप में टाइप यूनिट (()) है। –

संबंधित मुद्दे