Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre un argumento bastante particular.

Anuncios

En este post vimos que en el codigo de ejemplo usamos este bucle for:

for _ in 0..3
Anuncios
Anuncios

En este caso pasamos al guion bajo (_), tambien conocido como underscore, este es un parametro reservado del lenguaje, si bien es utilizado como comodin para distintas partes de nuestro codigo tambien tiene otras utilidades, por ejemplo en este caso lo usamos porque el bucle que utilizamos en el codigo del post citado era para repetir el bloque de instrucciones y como es una variable que no la utilizamos para otra cosa la reemplazamos por este comodin para que el lenguaje sepa que no la usaremos en nuestro codigo pero si para almacenar la secuencia del bucle for.

Anuncios

Como dijimos este basicamente es un comodin, como tal nos permite recibir cualquier tipo de dato o instruccion, por ejemplo:

_ => println!("Este es un comodin");
Anuncios

Pero no confundamos este comodin con una variable o union de variable porque en realidad no lo es sino simplemente que son para recibir una informacion que no sera usada en otra parte del codigo pero que debemos hacerlo, un ejemplo de lo visto anteriormente seria:

match 42 {
    _ => println!("Se coincidio con el comodin"),
}
Anuncios

Otro uso que le podemos dar es para cuando no necesitamos almacenar el resultado de una accion, por ejemplo:

let _ = std::fs::remove_file("archivo.txt");
Anuncios

Por ejemplo en este caso lo utilizamos para remover un archivo y como no necesitamos manejar lo que devuelve simplemente lo pasamos aqui y listo, tal como dijimos al principio almacenamos el resultado pero simplemente para contentar al lenguaje 😁

Anuncios

Vamos a tomar el ejemplo que vimos en este post, donde teniamos un proyecto llamado bucles y el siguiente codigo en main.rs:

main.rs

fn main()
{

        let mi_arreglo = ["Lovecraft","Poe","Barker","King"];

        for (pos, apellido) in mi_arreglo.iter().enumerate()
        {
                println!("{} esta en la posicion {}", apellido, pos);
        }
}
Anuncios

Vamos a suponer que no necesitamos mas mostrar la posicion de cada elemento pero no queremos eliminar por el momento que se ejecute enumerate, para ello lo modificaremos de esta forma:

fn main() 
{
	let mi_arreglo = ["Lovecraft","Poe","Barker","King"];

	for (_, apellido) in mi_arreglo.iter().enumerate()
	{
    		println!("{}", apellido);
	}
}
Anuncios

Como no vamos a utilizar mas a la variable pos simplemente la reemplazamos para que el codigo sigue entregando el dato de enumerate y esto no afecta la funcionalidad del codigo, por otro lado modificamos para que solamente nos muestre el dato de cada posicion, si lo compilamos y ejecutamos veremos lo siguiente:

tinchicus@dbn001vrt:~/lenguajes/rust/bucles$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/bucles`
Lovecraft
Poe
Barker
King
tinchicus@dbn001vrt:~/lenguajes/rust/bucles$
Anuncios

En cambio si no utilizaramos el guion bajo al momento de compilarlo nos devolvera lo siguiente:

tinchicus@dbn001vrt:~/lenguajes/rust/bucles$ cargo build
   Compiling bucles v0.1.0 (/home/tinchicus/lenguajes/rust/bucles)
warning: unused variable: `pos`
 --> src/main.rs:5:7
  |
5 |     for (pos, nombre) in mi_arreglo.iter().enumerate()
  |          ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
  |
  = note: `#[warn(unused_variables)]` on by default

warning: `bucles` (bin "bucles") generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 0.69s
tinchicus@dbn001vrt:~/lenguajes/rust/bucles$
Anuncios

Observen que nos notifica que la variable pos no es utilizado y una sugerencia de como nombrarla para que el compilador le indique al lenguaje que debe ignorarla pero el programa se compilara, y si lo ejecutamos nos mostrara el mismo mensaje pero se ejecutara, por esto es lo que realmente se usa el guion bajo y si lo ven es simplemente para evitar que el compilador nos emita un aviso pero recuerden que muchas veces esto no afecta al ejecucion del codigo.

Anuncios

En resumen, hoy hemos visto un parametro que veremos de forma muy seguida en todos nuestros codigos, dado que al ser un comodin para contentar al lenguaje lo necesitaremos para evitar algunos avisos en el momento de compilacion, hemos visto un par de usos practicos, donde lo hemos aplicado y como nos permite solucionar unas simples modificaciones, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50