F #

2011-05-31 13 views
11

के लिए फ़ाइल जांच कोड मेरे पास यह कोड है जब फ़ाइल मौजूद नहीं है तो त्रुटि उत्पन्न करने के लिए।F #

if !File.Exists(doFile) then 
    printfn "doFile doesn't exist %s" doFile; failwith "quit" 

हालांकि, मुझे यह त्रुटि मिली। क्या गलत है?

error FS0001: This expression was expected to have type 
    bool ref  
but here has type 
    bool 

उत्तर

17

! ऑपरेटर कुछ एक नहीं, नहीं है, यह एक संदर्भित operatior है, तो नहीं कहने के लिए है, तो आप फ़ंक्शन का उपयोग करना एफ # में एक विशेष अर्थ नहीं है, इसकी परिभाषा के अनुसार:

type 'a ref { Contents : 'a } 
let (!) (x : ref 'a) = x.Contents 

आपको त्रुटि मिल रही है क्योंकि ! ऑपरेटर bool ref की अपेक्षा करता है, लेकिन आपने इसे bool पास कर दिया है।

if not(File.Exists(doFile)) then 
    printfn "doFile doesn't exist %s" doFile; failwith "quit" 
7

एफ # में! , जैसे if not <| File.Exists....

+2

जहां पीछे की ओर पाइप का उपयोग करने का एक अच्छा उदाहरण बातें अधिक पठनीय बनाता है:

बजाय not समारोह का उपयोग करें। – Benjol

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