1

Я новичок в F #, так что извините, если это выглядит слишком глупо. Я пытаюсь слушать события создания и удаления файлов через FileSystemWatcher. Теперь я хочу создать наблюдателя для отображения количества изменений на основе файлов, добавленных и удаленных в каталоге. Поэтому всякий раз, когда файл добавляется в счетчик каталогов, увеличивается на единицу и уменьшается при удалении файла. Мой код ниже:Это выражение должно было иметь тип FSI_0024.xxx, но здесь есть тип FSI_0017.xxx

let watcher = new FileSystemWatcher(@".") 
watcher.EnableRaisingEvents <- true 

let created = watcher.Created 

let deleted = watcher.Deleted 

type Change = 
    | Addition of string 
    | Removal of string 

let a = created |> Observable.map (fun eventArgs -> 
    Addition eventArgs.Name) 

let r = deleted |> Observable.map (fun eventArgs -> 
    Removal eventArgs.Name) 

let changes = Observable.merge a r 

let collector count state = 
    match state with 
    | Addition x   -> count + 1 
    | Removal x   -> count - 1 

let createdCount = 
    changes |> Observable.scan (fun count s -> collector count s) 0 

Но это дает следующее сообщение об ошибке на Observable.scan:

This expression was expected to have type 
    FSI_0024.Change  
but here has type 
    FSI_0017.Change 

типов одинаковы, но я не понимаю, это FSI_xxxx части. Что может быть проблемой?

+4

Сбросить сеанс fsi. Есть некоторые старые определения, висящие вокруг, вызывающие проблему. –

+0

@JohnPalmer Спасибо, что сэр за то, что сэкономил мое время. –

ответ

0

Эта ошибка возникает, когда компилятор использует старую версию того же типа.

Самое легкое решение - перезапустить сеанс FSI.

 Смежные вопросы

  • Нет связанных вопросов^_^