我第一次遇到允许在同一范围内声明变量名称两次的类型化语言。难道不会有机会错误地覆盖现有变量吗?它带来什么优势?
有书中有一章介绍了这一点。
隐藏与将变量标记为 mut 不同,因为如果我们不小心尝试在不使用 let 关键字的情况下重新分配给该变量,我们将收到编译时错误。通过使用let,我们可以对一个值执行一些转换,但在这些转换完成后变量是不可变的。
mut 和 Shadowing 之间的另一个区别是,因为当我们再次使用 let 关键字时,我们实际上是在创建一个新变量,所以我们可以更改值的类型,但重复使用相同的名称。例如,假设我们的程序要求用户通过输入空格字符来显示他们想要在某些文本之间有多少个空格,但我们确实希望将该输入存储为数字
let spaces = " "; // String
let spaces = spaces.len(); // number
简而言之,它允许您以技术上不可变的方式“修改”值。 Rust 确保您不能使用隐藏变量,因此它是完全类型安全的。
我不是 Rust 专家,但从语言设计的角度来看,这是一件值得鼓励的有趣的事情。但我认为重点是不鼓励尽可能使用可变值,允许您用新类型和值一成不变地覆盖名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)