F#的文件检查代码

时间:2011-05-31 14:58:05

标签: file 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

2 个答案:

答案 0 :(得分:17)

!运算符在F#中具有特殊含义,定义为:

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

您收到错误是因为!运算符需要bool ref,但您传递了bool

改为使用not功能:

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

答案 1 :(得分:7)

在F#中

!不是NOT,它是一个引用运算符,所以要说不是,你需要使用not函数,比如if not <| File.Exists....