【问题标题】:How to identify redefined variables or shadowed variables如何识别重新定义的变量或阴影变量
【发布时间】:2016-06-10 19:05:49
【问题描述】:

使用 F# 编译器在同一范围内两次使用同一变量时,不会出现警告或反馈。例如

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

有没有办法通过编译器警告或在编辑器中直观地获得有关阴影变量的反馈。如何做到这一点?

【问题讨论】:

  • 感谢您将其转变为正确的问题和答案 :-)。我认为您(现已删除)对昨天关于此问题的回答非常有用,应该保留在某个地方!
  • 真的应该感谢创建该功能的人。你是谁,谢谢。还要感谢 Jack 在前面提到的问题之一中指出这一点。

标签: f# shadowing


【解决方案1】:

首先,在同一范围内隐藏变量不是错误或应该禁用的东西。正如Joel Mueller 所说,它是legitimate, useful, and common

MSDN

在模块范围以外的任何级别的范围内,都不会出错 重用一个值或函数名。如果您重用名称,则声明的名称 later 会隐藏之前声明的名称。


Visual Studio 扩展F# Power ToolsSyntax Coloring 功能将突出显示当前有效变量并将阴影变量显示为浅灰色。例如

可以从 Visual Studio 菜单安装扩展

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

可以从 Visual Studio 菜单激活该功能

工具 -> 选项 -> F# Power Tools -> 常规 -> 语法着色 -> 将未使用的声明变灰

关闭选项:

有选项:

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

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

源代码注释:

未使用的声明变灰


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

F# Power Tools features list

【讨论】:

  • 我必须重新启动 Visual Studio 才能获得更改,而不是重建。
  • 颜色编码是一个比警告更好的选择。当我做一些合法、有用和常见的事情时,我不想被警告。
  • @Ringil 阅读您的评论后,我测试了几种不同的方法。正如您所指出的,重建不是一种可靠的方法。如果我只是关闭正在编辑的源文件然后再次打开它,更改就会生效,不需要重建。谢谢,我会编辑答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2013-06-15
  • 2018-08-14
  • 1970-01-01
相关资源
最近更新 更多