在 Rust 中允许变量阴影背后的基本原理是什么?

Giz*_*zmo 13 paradigms rust

在 Rust 中,鼓励隐藏变量:

但是等等,程序不是已经有一个名为 guess 的变量了吗?确实如此,但 Rust 允许我们用一个新的值来掩盖之前的 guess 值。

此功能不会引入以下问题:

  • 难以遵循代码(更容易产生错误)
  • 当一个人打算访问不同的变量时访问变量(产生错误)

我根据自己的经验和以下来源获得了这些信息:1 2 3 4 5

决定包含变量阴影的根本原因是什么?

它确实具有仅创建guess而不是guess_strvs 的优势guess_int。有优点也有缺点。

是什么让 Rust 的发明者相信优点大于缺点?

编程界似乎对此存在分歧;有些语言只发出警告并阻止阴影,有些语言明确禁止,有些允许,有些甚至鼓励。理由是什么?

如果可能的话,我想了解更多,完整的答案可能包括:

  • 有哪些优点/缺点?
  • 阴影变量的用例是什么?
  • 什么时候不应该在 Rust 中使用它们?
  • 来自不同编程背景的不同人必须记住什么?(以及不要陷入哪些陷阱)

She*_*ter 15

因为它最初受到支持并且从未被删除

更像是我们从不禁止阴影,因为它刚刚脱离了编译器的实现。

我记得,格雷登提出了禁止阴影的想法,但我坚持了这个功能,没有其他人真正关心,所以它留下了。

-普华顿

也可以看看:

  • @MarcoBonelli 这里没什么特别的,我只是在 Google 上搜索了“rust rfc Shadowing”,然后单击了第六个链接,然后复制并粘贴了引用。:-) (3认同)