来自锈书 https://doc.rust-lang.org/book/structs.html关于如何改变结构体字段:
let mut point = Point { x: 0, y: 0 };
point.x = 5;
然后:
可变性是绑定的属性,而不是结构本身的属性。
这对我来说似乎违反直觉,因为point.x = 5
看起来我没有重新绑定变量point
。有没有一种方法可以更直观地解释这一点?
我能解决这个问题的唯一方法就是“想象”我正在重新绑定point
到原件的副本Point
与不同的x
值(甚至不确定这是否准确)。
这对我来说似乎违反直觉,因为 point.x = 5 看起来不像我正在重新绑定变量点。有没有一种方法可以更直观地解释这一点?
所有这一切都表明,某物是否可变是由let
- 变量的声明(绑定),而不是类型或任何特定字段的属性。
在示例中,point
它的字段是可变的,因为point
被介绍在一个let mut
声明(而不是简单的let
声明)而不是因为某些属性Point
一般类型。
作为对比,为了说明为什么这很有趣:在其他语言中,例如 OCaml,您可以在类型定义中将某些字段标记为可变:
type point =
{ x: int;
mutable y: int;
};
这意味着你可以改变y
每个领域point
值,但你永远不能变异x
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)