Aprendiendo Rust en público - Funciones (1)
Despues de haber completado los ejercicios de variables, comenzaremos ahora a explorar las funciones.
Les recuerdo que seguimos juntos la serie de ejercicios de rustlings
Comencemos de una vez.
Ejercicio 1 #
El código inicial (con errores)
// functions1.rs
fn main() {
call_me();
}
Y el error (y ayuda) del compilador
⚠️ Compiling of exercises/functions/functions1.rs failed! Please try again. Here's the output:
error[E0425]: cannot find function `call_me` in this scope
--> exercises/functions/functions1.rs:7:5
|
7 | call_me();
| ^^^^^^^ not found in this scope
error: aborting due to previous error
For more information about this error, try `rustc --explain E0425`.
Vamos paso a paso. La guía para esta serie de ejercicios será el libro de rust y el capìtulo sobre funciones
Para declarar una funcion necesitamos del keyword fn
, el nombre de la función, entre paréntesis los parámetros de ésta (opcionales) y el cuerpo de la función (entre brackets {}
).
En el ejercicio, vemos declarada una función, main
. Este es el punto de entrada de nuestra aplicación. Luego,vemos que se esta llamando a la función call_me
. Llamamos la función con su nombre más los parametros opcionales entre paréntesis. Por convención el nombre se escribe en snake case, es decir minúsculas con palabras separadas por guión bajo.
call_me
está siendo llamada sin ningún parametro, pero nuestro problema es otro.
Al revisar el error, descubrimos ( o más bien el compilador nos da cuenta) que no encontró la función call_me
en el scope.
Tiene razón. Estamos llamando una función que ni siquiera hemos declarado.
Es importante comprender que al declarar nuestra función declaramos también cómo debe ser llamada, con qué parametros y cuantos.
Entonces como ya sabemos que llamaremos nuestra función call_me
sin paremetros, le daremos también esa forma.
Nuestro ejercicio luego queda de esta manera:
// functions1.rs
fn call_me() {}
fn main() {
call_me();
}
Así es. Sólo con definir la función el ejercicio compila. En este ejercicio en particular, lo que haga la función (lo que se definiría en el cuerpo de esta) es irrelevante.
Si quisieras probar con algo más, puedes intentar agregar el macro println!
que hemos usado en los ejercicios anteriores.
// functions1.rs
fn call_me() {
println!("Aprendiendo Rust en Público")
}
fn main() {
call_me();
}
Para seguir esta serie, puedes buscar por el tag #aprendiendo_rust
- Siguiente: Aprendiendo Rust en público - Funciones (2)
- Anterior: Side projects