Rust 允许锈迹中出现可变阴影的原因是什么?

Rust 允许锈迹中出现可变阴影的原因是什么?,rust,paradigms,Rust,Paradigms,在Rust中,需要对变量进行阴影处理: 但是等等,这个程序不是已经有一个名为guess的变量了吗?信息技术 是的,但是生锈使我们可以用一个 新的 这项功能会不会带来以下问题: 难以理解的代码(更容易创建bug) 当一个人打算访问另一个变量时访问变量(创建bug) 我根据自己的经验和以下来源获得此信息: 决定包含可变阴影的根本原因是什么 它的优点是只创建guess,而不是guess\u strvsguess\u int。有优点也有缺点 是什么让铁锈的发明者相信优点大于缺点? 编程界对此似乎存在

在Rust中,需要对变量进行阴影处理:

但是等等,这个程序不是已经有一个名为guess的变量了吗?信息技术 是的,但是生锈使我们可以用一个 新的

这项功能会不会带来以下问题:

  • 难以理解的代码(更容易创建bug)
  • 当一个人打算访问另一个变量时访问变量(创建bug)
我根据自己的经验和以下来源获得此信息:

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

它的优点是只创建
guess
,而不是
guess\u str
vs
guess\u int
。有优点也有缺点

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

编程界对此似乎存在分歧;有些语言只发出警告,不鼓励跟踪,有些语言明确禁止跟踪,有些语言允许跟踪,有些语言甚至鼓励跟踪。原因是什么

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

  • 有哪些优点/缺点
  • 阴影变量的用例是什么
  • 什么时候不用它们生锈
  • 不同编程背景的人需要记住什么?(以及不应落入的陷阱)
    • 因为:

      这更像是我们从未禁止过阴影,因为它只是从编译器的实现中掉出来的

      我记得,格雷登提出了禁止阴影的想法,但我坚持这一特点,没有其他人真正关心,所以它一直存在

      -pcwalton

      另见:


      并不是说我对这家伙的期望会更低。获得我的支持,先生。@MarcoBonelli这里没什么特别的,我只是在Google上搜索了
      rust rfc shadowing
      ,点击了第六个链接,然后复制并粘贴了引文。:-)评论不用于扩展讨论;这本书清楚地说明了他们的决定背后的原因,但你提出问题的方式使它显得固执己见和不精确。阴影允许我们重用变量名,而不是创建唯一的变量名;它允许我们转换变量,而无需使它们相互转换;它允许我们在不手动创建两个不同类型的变量的情况下转换类型(通过自动化使事情变得简洁);阴影是可选的(您不必这样做),并且不是非常复杂或难以阅读。如果阴影真的有问题,你有没有考虑过一次只问一个问题?@Wolfpack'08感觉你没有读过这个问题,我知道这个例子为什么使用阴影。如果你读得比标题更深的话,你就会知道我是在问为什么要把阴影都包括在锈迹中。