此表达式的类型应为 FSI_0024.xxx 但此处的类型为 FSI_0017.xxx
This expression was expected to have type FSI_0024.xxx but here has type FSI_0017.xxx
我是 F# 的新手,如果这看起来太愚蠢,我深表歉意。我正在尝试通过 FileSystemWatcher
监听文件创建和删除事件。现在我想创建一个观察器来显示基于目录中添加和删除的文件的更改计数。因此,每当一个文件被添加到目录时,计数就会增加一个,而当文件被删除时,计数就会减少。我的代码如下:
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 部分。可能是什么问题?
当编译器使用相同类型的旧版本时会导致此类错误。
最简单的解决方案是重新启动 FSI 会话
我是 F# 的新手,如果这看起来太愚蠢,我深表歉意。我正在尝试通过 FileSystemWatcher
监听文件创建和删除事件。现在我想创建一个观察器来显示基于目录中添加和删除的文件的更改计数。因此,每当一个文件被添加到目录时,计数就会增加一个,而当文件被删除时,计数就会减少。我的代码如下:
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 部分。可能是什么问题?
当编译器使用相同类型的旧版本时会导致此类错误。
最简单的解决方案是重新启动 FSI 会话