我有这段代码在文件不存在时引发错误。
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
答案 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)
!不是NOT,它是一个引用运算符,所以要说不是,你需要使用not函数,比如if not <| File.Exists....