5

Duplicate definition of value fooF# 编译器有时会拒绝我的代码,并出现指向如下定义的编译时错误:

let foo = ref 0

即使这不是重复的定义,因为foo整个文件中没有其他定义。为什么会这样?

4

1 回答 1

8

当您还定义一个get_foo函数时会发生这种情况:

let get_foo() = !foo

因为 的定义foo创建了一个实现自己的get_foo方法的属性,所以存在冲突。F# 编译器对此感到困惑并生成虚假的“重复定义错误”。

此错误已报告给 Microsoft,他们正在努力修复,但不会将其纳入 F# 的下一个 (VS11) 版本。

于 2012-05-14T09:07:17.260 回答