Aprendiendo Rust en público - Funciones (2)
Es hora de continuar con nuestros ejercicios. Si recíen te integras a la serie, te recuerdo que estamos (sí, nosotros... juntos) aprendiendo Rust, usando como guía los ejercicios de rustlings. Además, de vez en cuando consultamos el libro de Rust.
Como anteriormente, haremos un pequeño análisis del código, y del error que inicialmente nos dé el ejercicio.
El ejercicio:
// functions2.rs
fn main() {
call_me(3);
}
fn call_me(num:) {
for i in 0..num {
println!("Ring! Call number {}", i + 1);
}
}
Y el error:
⚠️ Compiling of exercises/functions/functions2.rs failed! Please try again. Here's the output:
error: expected type, found `)`
--> exercises/functions/functions2.rs:10:16
|
10 | fn call_me(num:) {
| ^ expected type
error[E0425]: cannot find value `num` in this scope
--> exercises/functions/functions2.rs:11:17
|
11 | for i in 0..num {
| ^^^ not found in this scope
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0425`.
El compilador nos da dos errores. Primero nos indica cláramente que nos olvidamos (a propósito) de darle un tipo al argumento de la función call_me. El segundo error no es tan claro, pero podría ser un efecto de cascada producido por el primer error.
Resolvamos el primer error.
// functions2.rs
fn main() {
call_me(3);
}
fn call_me(num:i32) {
for i in 0..num {
println!("Ring! Call number {}", i + 1);
}
}
En mi caso yo usé el tipo i32, pero podría ser cualquiera que satisfaga la condición de poder ser un número entero positivo, para poder ser usado por la expresión for i in 0..num
. Aún no revisaremos a fondo esta expresión, pero por ahora les cuento que iteraremos o repetiremos lo que está en el cuerpo de la expresión (lo que está entre {}
) cierta cantidad de veces (en este ejemplo desde 0
hasta num-1
ya que el último valor no se incluye) reemplazando el valor de i
.
Nuestro programa ahora compila. El segundo error no era tal, si no que era efecto del primer error.
Ejercicio Completado!
Para seguir esta serie, puedes buscar por el tag #aprendiendo_rust
- Siguiente: Cambiando el rumbo
- Anterior: Aprendiendo Rust en público - Funciones (1)