在 Rust 中:self 和 Self(小写和大写)有什么区别?
大家好!我开始学习 Rust,遇到了一件奇怪的事:代码中经常出现 `self` 和 `Self`,但它们的用法不同。我搞混了。
下面是我试图理解的 Rust 书中的一个例子:
```rust
struct Point {
x: f64,
y: f64,
}
impl Point {
fn new(x: f64, y: f64) -> Self {
Self { x, y }
}
fn distance(&self, other: &Self) -> f64 {
let dx = self.x - other.x;
let dy = self.y - other.y;
(dx * dx + dy * dy).sqrt()
}
}
```
我看到在 `fn new` 中返回的是 `Self`,而在 `fn distance` 中参数 `other` 的类型是 `&Self`。同时在方法内部我通过 `self.x` 访问字段。但 `self` 和 `Self` 不是一回事吗?为什么它们写法不同?
我的问题是:`self`(小写)和 `Self`(大写)之间的根本区别是什么?什么时候该用哪一个?能否直接用结构体名称(例如 `Point`)代替 `Self`?以及为什么在方法内部...