Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何识别重定义变量或阴影变量_F#_Shadowing - Fatal编程技术网

F# 如何识别重定义变量或阴影变量

F# 如何识别重定义变量或阴影变量,f#,shadowing,F#,Shadowing,在F编译器的同一作用域中使用同一变量两次时,没有警告或反馈。e、 g let s = "abc" let s = "def" printfn "%A" s 导致 def 我见过 有没有一种方法可以通过编译器警告或在编辑器中直观地获取有关隐藏变量的反馈。如何做到这一点?首先,在同一范围内隐藏变量不是一个bug,也不应该被禁用。正如各国所说,它是合法的、有用的和普遍的 在除模块作用域以外的任何作用域级别上,使用 重用值或函数名。如果重复使用名称,则声明的名称 后面的阴影是前面声明的名称 Vi

在F编译器的同一作用域中使用同一变量两次时,没有警告或反馈。e、 g

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

def
我见过


有没有一种方法可以通过编译器警告或在编辑器中直观地获取有关隐藏变量的反馈。如何做到这一点?

首先,在同一范围内隐藏变量不是一个bug,也不应该被禁用。正如各国所说,它是合法的、有用的和普遍的

在除模块作用域以外的任何作用域级别上,使用 重用值或函数名。如果重复使用名称,则声明的名称 后面的阴影是前面声明的名称

Visual Studio扩展的功能将突出显示当前有效变量,并将阴影变量显示为浅灰色。e、 g

可以从Visual Studio菜单安装扩展

工具->扩展和更新 一旦对话框打开 选择Visual Studio库 在右上角的搜索框中,输入F电动工具 因为我已经安装了它,所以没有显示安装选项

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

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

关闭选项时:

选项为:

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

感谢您注意到我先前的无效声明

源代码中的注释:

灰显未使用的声明

检查当前未使用的非公共类型、方法、函数和值声明。当心这个 当代码没有类型错误时,功能仅100%可靠。这 此设置在“常规选项”中可用。默认情况下,它处于禁用状态 因为大文件上可能存在性能问题


我必须重新启动Visual Studio以获得更改,而不是重建。颜色编码是比警告更好的选择。“当我做一些合法的、有用的和普通的事情时,我不想被警告。”Ringil在读了你的评论后,我测试了几种不同的方法。正如您所指出的,重建不是一种可靠的方法。如果我只是关闭正在编辑的源文件,然后再次打开它,更改将生效,无需重新生成。谢谢,我将编辑答案。谢谢你将此转化为正确的问题和答案:-。我认为你对昨天关于这个问题的删除的答案真的很有用,应该放在某个地方!真的应该感谢创建该功能的人。无论你是谁,谢谢。另外,感谢Jack在前面提到的一个问题中指出了这一点。