En Rust: ¿cuál es la diferencia entre self y Self (minúscula y mayúscula)?
¡Hola a todos! Empecé a aprender Rust y me encontré con algo extraño: en el código a menudo aparecen `self` y `Self`, pero se usan de manera diferente. Estoy confundido.
Aquí hay un ejemplo del libro de Rust que estoy tratando de entender:
```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()
}
}
```
Veo que en `fn new` se devuelve `Self`, y en `fn distance` el parámetro `other` tiene tipo `&Self`. Mientras tanto, dentro de los métodos accedo a los campos mediante `self.x`. Pero, ¿acaso `self` y `Self` son lo mismo? ¿Por qué se escriben de manera diferente?
Mi pregunta: ¿cuál es la diferencia fundamental entre `self` (con minúscula) y `Self` (con mayúscula)? ¿Cuándo se debe usar uno y cuándo el otro? ¿Se puede escribir directamente el nombre de la estructura, como `Point`, en lugar de `Self`? ¿Y por qué dentro...
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Refactorización de código legacy en JavaScript: guía paso a paso
Principales errores de los desarrolladores principiantes de Go: de la A a la Z
Chaos Engineering para Java: cómo romper una aplicación para hacerla más fuerte
Los 10 mejores frameworks TypeScript para desarrollo web: nivel avanzado