Код проверки файлов для 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
Ответы
Ответ 1
Оператор !
имеет особое значение в 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"
Ответ 2
в F #! не является NOT, это справочная операция, так сказать, вам нужно использовать функцию not, что-то вроде if not <| File.Exists....