【发布时间】:2020-01-22 13:06:26
【问题描述】:
在 Rust 中,encouraged 隐藏变量:
但是等等,程序不是已经有一个名为guess的变量了吗?它 确实如此,但 Rust 允许我们用 新的。
这个功能会不会引入类似的问题:
- 难以遵循的代码(更容易产生错误)
- 在打算访问不同变量时访问变量(产生错误)
决定包含变量阴影的根本原因是什么?
创建guess 而不是guess_str 与guess_int 确实有其优势。有优点也有缺点。
是什么让 Rust 的发明者相信利大于弊?
编程界似乎对此存在分歧;有些语言只发出警告并阻止阴影,有些语言明确禁止它,有些允许它,有些甚至鼓励它。原因是什么?
如果可能的话,我想了解更多,完整的答案可能包括:
- 有哪些优点/缺点?
- 影子变量有哪些用例?
- 什么时候不在 Rust 中使用它们?
- 来自不同编程背景的不同人必须记住什么? (以及哪些陷阱不能落入)
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
本书清楚地展示了他们的决定背后的原因,但您提出问题的方式使其显得固执且不精确。阴影允许我们重用变量名而不是创建唯一的变量名;它允许我们在不使变量变为 mut 的情况下转换变量;它让我们无需手动创建两个不同类型的变量就可以转换类型(通过自动化使事情变得简洁);阴影是可选的(您不必这样做)并且不是非常复杂或难以阅读。如果阴影确实存在问题,您是否考虑过一次只询问一个问题?
-
@Wolfpack'08 感觉好像你没有读过这个问题,我知道为什么这个例子使用了阴影。如果您比标题进一步阅读,那么您就会知道我在询问将阴影 at all 包含到 Rust 中的基本原理。