मैं एफ # सीख रहा हूं और ढूंढ रहा हूं कि मैं उन चीज़ों को लिख रहा हूं जो काम करते हैं लेकिन जो मैं पूरी तरह से समझ नहीं पा रहा हूं। यहाँ एक उदाहरण घर गए संदेशों showHelp हैकई बयान के साथ एफ # लैम्ब्डा अभिव्यक्ति
let processArgs args =
match args with
| null
| [||] -> [fun() -> getCredentials(); home 20; mentions 20; messages 20]
| [|"-h"|]
| [|"-?"|] -> [showHelp]
| [|"-reset"|] -> [clearAllSettings]
| _ -> [fun() -> printfn "%s" (String.Join(" ", args))]
[<EntryPoint>]
let main (args:string[]) =
try
let actions = processArgs args
List.iter (fun action -> action()) actions
0
finally
Console.ResetColor()
Console.CursorVisible <- true
तरीकों getCredentials,, का उल्लेख है,,, और clearAllSettings सब सरल कार्य हैं और आप क्या उम्मीद करते हैं।
[fun() -> getCredentials(); home 20; mentions 20; messages 20]
काम करता है जैसे मैं चाहता हूँ:
लाइन (हाँ, यह एक चहचहाना ग्राहक है, कि नए 'नमस्ते विश्व' डेमो नहीं है?)। यह getCredentials, फिर घर, फिर उल्लेख करता है, तो संदेश
मेरे परिप्रेक्ष्य से, अर्धविराम एक कथन विभाजक की तरह काम कर रहा है। मैंने इसे पहले वर्णित नहीं देखा है। क्या यह यहाँ चल रहा है?
क्या यह लिखने का एक और बेवकूफ तरीका है (दूसरे शब्दों में, क्या एक अनुभवी एफ # प्रोग्रामर फर्श पर हंसते हुए हंसते हुए रोल करेगा)?
अधिक जानकारी: मेरा मूल उद्देश्य कार्यों की एक सूची होना था और फिर विकल्पों को खोजने के रूप में क्रियाएं जोड़ना था। सी # में मैं आमतौर पर सूची < एक्शन>() के साथ ऐसा करता हूं। अर्धविराम की बात ने मुझे आश्चर्यचकित कर दिया क्योंकि मूल रूप से मैंने इसे लिखने की कोशिश की:
[getCredentials; home 20; mentions 20; messages 20]
लेकिन संकलक इसे पसंद नहीं आया।
खैर, भाषा विनिर्देश चारों ओर से खुदाई के कुछ ही घंटों जवाब पता चलता है। यह वाक्यविन्यास का एक रूप है जिसे वर्बोज सिंटैक्स कहा जाता है। यहां वर्णित एक लिंक दिया गया है: http://msdn.microsoft.com/en-us/library/dd233199.aspx मैं अभी भी सोच रहा हूं कि कमांड लाइन तर्कों को पार करने के लिए मेरा दृष्टिकोण यह है कि F # 'ers यह कैसे करेंगे। –