【问题标题】:F# value shadowing - is it possible to disable value shadowing within the same scopeF# 值阴影 - 是否可以在同一范围内禁用值阴影
【发布时间】:2015-04-11 04:46:00
【问题描述】:

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

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

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

谢谢

【问题讨论】:

标签: f# shadowing


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢杰克。这正是我所追求的。我还注意到 F# 电源组的值变灰了。另一方面,您是否介意在这篇文章中详细说明为什么阴影对 F# 很重要?我不确定必须通过阴影完成什么工作流程。似乎所有的不变性安全性都可以通过阴影轻松撤消(我知道阴影不是突变)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 2017-01-29
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多