2012-05-14 28 views
5

Chiếc F # biên dịch đôi khi từ chối mã của tôi với một lỗi thời gian biên dịch có dạng Duplicate definition of value foo chỉ vào một định nghĩa như thế này:Bogus "định nghĩa trùng lặp có giá trị" lỗi từ F # biên dịch

let foo = ref 0 

mặc dù đây là không phải là định nghĩa trùng lặp vì không có định nghĩa nào khác của foo trong toàn bộ tệp. Lý do tại sao điều này xảy ra?

Trả lời

8

Điều này xảy ra khi bạn cũng định nghĩa một hàm get_foo:

let get_foo() = !foo 

vì định nghĩa của foo tạo ra một tài sản mà thực hiện phương pháp get_foo riêng của mình để có một cuộc đụng độ. Trình biên dịch F # bị nhầm lẫn bởi điều này và tạo ra "lỗi định nghĩa trùng lặp" không có thật.

Lỗi này đã được báo cáo cho Microsoft và họ đang khắc phục sự cố nhưng nó sẽ không đưa nó vào bản phát hành tiếp theo (VS11) của F #.

Các vấn đề liên quan