F#值阴影 - 是否可以在同一范围内禁用值阴影

时间:2015-04-11 04:46:01

标签: f# shadowing

由于复制/粘贴,我在自己的代码中发现了一个错误。相同的值名称将被复制/粘贴在同一范围内。

let func() =
    let a = 1
    let a = something_else
    ....

在C#中我不会通过编译。有没有办法禁用阴影?至少在相同的范围内?

由于

1 个答案:

答案 0 :(得分:5)

你不能在F#中禁用阴影 - 它是一种重要的语言功能。

但是,您可以指示编译器发出警告或错误,以帮助您捕获意外阴影的情况。

在项目属性中,将--warnon:1182添加到“其他标志”文本框(在“构建”选项卡上,在平台目标下拉列表下)。当您意外地隐藏变量并导致它不能在任何地方使用时,这会触发编译器警告。如果您认为这些情况导致编译失败,您还可以将1182添加到“构建”选项卡的“将警告视为错误”部分下的“特定警告”文本框中。

最后 - 安装Visual F# Power Tools扩展程序。它提供了额外的语法突出显示功能,并指示未使用的变量,因此很容易在代码中找到它们。