【发布时间】:2016-07-29 06:45:45
【问题描述】:
如果我编写以下 F# 代码,编译器会发出错误。
let a = 123
let a = 123
产生的错误是:
错误 FS0037:值“a”的重复定义
如果我在这样的函数中编写相同的代码:
let fctn =
let a =123
let a =123
a
它不会产生任何错误。
我不明白其中的区别。谁能解释一下?
编辑:我在模块级别编写的第一个代码。
【问题讨论】:
-
不清楚你在问什么。提供mcve
-
将这些剪切并粘贴到 fsi 中会产生基本上相同的错误。
-
来自MSDN Functions (F#):
At any level of scope other than module scope, it is not an error to reuse a value or function name. If you reuse a name, the name declared later shadows the name declared earlier. However, at the top level scope in a module, names must be unique.
标签: f# functional-programming shadowing