Код проверки файла для F # - PullRequest
11 голосов
/ 31 мая 2011

У меня есть этот код, чтобы вызвать ошибку, когда файл не существует.

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 ]

17 голосов
/ 31 мая 2011

Оператор ! имеет специальное значение в 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"
7 голосов
/ 31 мая 2011

в F #!это не NOT, это ссылочный оператор, так сказать нет, вам нужно использовать функцию not, что-то вроде if not <| File.Exists....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...