【发布时间】:2017-04-04 20:07:00
【问题描述】:
let a = 1
let a = 2
let b = a
这段代码安静地编译、运行和绑定 b = 2。
但这是期望的行为吗?它确实允许编码人员重用一个适当的值名称,没有对象被改变,但是在 n 行代码中,很容易在同一个命名空间中意外地再次使用一个值名称实际上,通过突变引入错误。我想知道这如何符合功能范式,以及是否应该发出某种警告。
【问题讨论】:
-
正如其他设计指出的值是不可变的,但绑定在 F# 中是可变的。这是一个品味问题。但是,重用变量名的缺点是使代码的可调试性降低,因为调试器是为 C# 设计的(不允许重用),因此只能看到最后一个绑定的值。