如何识别重新定义的变量或阴影变量

时间:2016-02-27 14:15:58

标签: f# shadowing

在F#编译器的同一范围内使用相同的变量两次时,没有警告或反馈。 e.g。

let s = "abc"
let s = "def"
printfn "%A" s

结果

def

我见过 Is there a way to have warnings for shadowing values in F# in Visual Studio?
F# value shadowing - is it possible to disable value shadowing within the same scope

有没有办法通过编译器警告或在编辑器中直观地获得有关阴影变量的反馈。怎么办呢?

1 个答案:

答案 0 :(得分:9)

首先,同一范围内变量的阴影不是错误或应禁用的内容。正如Joel Mueller所述,它是legitimate, useful, and common

MSDN

  

在模块范围以外的任何范围内,都不是错误   重用值或函数名称。如果重用名称,则声明名称   后来影响了之前宣布的名字。

Visual Studio扩展Syntax ColoringF# Power Tools功能将突出显示当前有效变量,并将阴影变量显示为浅灰色。 e.g。

enter image description here

可以从Visual Studio菜单

安装扩展程序

工具 - >扩展和更新
对话框打开后 选择Visual Studio Gallery
在右上角的搜索框中输入F#Power Tools
由于我已经安装了它,因此未显示安装选项。

enter image description here

可以从Visual Studio菜单

激活该功能

工具 - >选项 - > F#电动工具 - >一般 - >语法着色 - >灰显未使用的声明

enter image description here

关闭选项:

enter image description here

选项:

enter image description here

注意:更改选项后,必须关闭源文件,然后重新打开以使更改生效。 Visual Studio不需要为此重新启动,但这样做会产生相同的效果。

感谢Ringil注意到我之前的无效声明。

源代码注释:

  

灰显未使用的声明

           

检查当前未使用的非公共类型,方法,函数和值声明。要小心这一点   当代码没有类型错误时,功能只有100%可靠。这个   常规选项中提供了设置。默认情况下禁用它   因为大文件可能存在性能问题。

F# Power Tools features list