openlang

Отрицание в F# при проверке существования файла

Использую этот код, чтобы сообщать об ошибке, если файла нет.

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

Вместо этого появляется такая ошибка. Что я неправильно понял?

  error FS0001: This expression was expected to have type
      bool ref    
  but here has type
      bool
Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    В F# смысл ! отличается, и определяется он так:

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

    Ошибка возникает, потому что вы передали bool, тогда как операнду ! требуется тип bool ref.

    Замените его функцией not:

      if not(File.Exists(inputPath)) then
          printfn "inputPath doesn't exist %s" inputPath; failwith "stop"
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. `String::from_utf8` при неудаче возвращает байты

    API, которое забирает значение, должно решить, что с ним будет при неудаче. String::from_utf8 принимает Vec<u8> по значению,…

    Ответы 0Последняя активность rust
  2. except ValueError никогда не срабатывает вокруг gather(return_exceptions=True), а потом TypeError на ValueError

    Перед созвонами с клиентами я запускаю небольшой скрипт, который оценивает сайт каждого клиента по трём метрикам, с весами дл…

    Ответы 5Последняя активность python
  3. Освобождение в errdefer дало утечку на успешном пути

    Тест показал утечку, и утекло на пути, который завершился успешно. Функция выделяла временный буфер, разбирала данные в резул…

    Ответы 2Последняя активность zig