2011-05-31 19 views
11

Tengo este código para generar un error cuando el archivo no existe.Código de comprobación de archivo para F #

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

Sin embargo, recibí este error. ¿Qué pasa?

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

Respuesta

17

El operador ! tiene un significado especial en F #, la define como:

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

Recibirá el error porque el operador ! espera un bool ref, pero lo pasó bool.

utilizar la función not lugar:

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

en F #! No es un NO, es un operatior de referencia, por lo que decir que no, es necesario utilizar el no funciona, algo así como if not <| File.Exists....

+2

Un buen ejemplo de cómo el uso de la tubería hacia atrás hace las cosas más fácil de leer. – Benjol

Cuestiones relacionadas