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

标签 f# shadowing

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

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

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

谢谢

最佳答案

您不能在 F# 中禁用阴影——这是一项重要的语言功能。

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

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

最后 -- 安装 Visual F# Power Tools扩大。它提供了额外的语法突出显示功能,并会指示未使用的变量,以便在您的代码中轻松发现它们。

关于F# 值阴影 - 是否可以在同一范围内禁用值阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29574218/

相关文章:

java - Iterable 实现中的 Lambda 表达式

f# - 为 Fable 编写 F# 时,什么时候应该使用异步,什么时候应该使用 promise?

f# - 详细语法中的简单正确实现文件?

ruby - 隐藏实例方法的 Ruby 局部变量的行为

rust - 当你在 Rust 中可变地隐藏一个 Vector 时会发生什么?

r - 如果该函数名称已重新分配给一个值,R 如何知道使用该函数?

wpf - F# 异步和 WPF 进度条

javascript - F# 组合函数

.net - 在 F# 中。是否可以重载抽象类型的构造函数?

opengl - 如何在 OpenGL 中快速轻松地创建与场景无关的阴影,而无需着色器