F# 值阴影 - 是否可以在同一范围内禁用值阴影
F# value shadowing - is it possible to disable value shadowing within the same scope
由于 copy/paste,我在自己的代码中发现了一个错误。同一范围内的 copy/pasted 隐藏了相同的值名称。
let func() =
let a = 1
let a = something_else
....
在 C# 中,我不会通过编译。有没有办法禁用阴影?至少在同级别范围内?
谢谢
您不能在 F# 中禁用阴影——这是一项重要的语言功能。
但是,您可以指示编译器发出警告或错误,这将帮助您捕获意外阴影的情况。
在项目属性中,将 --warnon:1182
添加到 "Other flags" 文本框(在“构建”选项卡上的“平台目标”下拉列表下)。当您不小心隐藏了一个变量并导致它不能在任何地方使用时,这会触发编译器警告。如果您希望这些情况导致编译失败,您还可以将 1182
添加到“构建”选项卡的 "Treat warnings as errors" 部分下的 "Specific warnings" 文本框中。
最后 -- 安装 Visual F# Power Tools 扩展。它提供了额外的语法突出显示功能,并将指示未使用的变量,以便在您的代码中轻松发现它们。
由于 copy/paste,我在自己的代码中发现了一个错误。同一范围内的 copy/pasted 隐藏了相同的值名称。
let func() =
let a = 1
let a = something_else
....
在 C# 中,我不会通过编译。有没有办法禁用阴影?至少在同级别范围内?
谢谢
您不能在 F# 中禁用阴影——这是一项重要的语言功能。
但是,您可以指示编译器发出警告或错误,这将帮助您捕获意外阴影的情况。
在项目属性中,将 --warnon:1182
添加到 "Other flags" 文本框(在“构建”选项卡上的“平台目标”下拉列表下)。当您不小心隐藏了一个变量并导致它不能在任何地方使用时,这会触发编译器警告。如果您希望这些情况导致编译失败,您还可以将 1182
添加到“构建”选项卡的 "Treat warnings as errors" 部分下的 "Specific warnings" 文本框中。
最后 -- 安装 Visual F# Power Tools 扩展。它提供了额外的语法突出显示功能,并将指示未使用的变量,以便在您的代码中轻松发现它们。