Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre una funcion que ya mencionamos anteriormente.

Anuncios

Esta funcion la mencionamos en este post para poder dar formato a una variable de tipo string, esta es parte del modulo fmt de la libreria std (std::fmt), esta es muy similar a lo visto en el post anterior a cuando formateabamos la salida de println, un ejemplo basico de uso de format es el siguiente:

format!("{} {}", 2, 10);
Anuncios

Este trabaja de la misma forma que println donde ubicara ambos datos en las llaves correspondientes pero tambien podemos usarlo de esta manera:

format!("{} {1} {} {0}", "Hola", "Mundo");
Anuncios

Este trabaja de forma similar a cuando vimos como ubicar las variables en las distintas llaves con println, pero en este caso observen que dejamos algunas en blanco, en esos casos ubicara la primera variable o literal (en este caso) que encuentre y en los otros casos utilizara al que le informamos, si lo probaramos la salida sera la siguiente:

Hola Mundo Mundo Hola
Anuncios

Pero tambien podemos usar parametros con nombre para identificarlos, algo similar a cuando trabajamos con Map en Java, veamos un ejemplo:

format!("{a} {b} {} {t}", a = "Hola", b = "Mundo", t = 22);
Anuncios

En este caso en lugar de pasar la posicion pasamos el nombre al cual asignamos el valor, esto es una relacion llamada clave-valor donde el valor estara asociado a esa clave/nombre, observen que dejamos uno en blanco, en este caso tomara la conducta de los casos anteriores, su salida sera la siguiente:

Hola Mundo Hola 22
Anuncios

Como pueden ver en este caso utilizo los datos que solicitamos y en el caso que dejamos en blanco tomo el primer valor que encontro.

Anuncios

Una cosa que no vimos hasta ahora es como formatear nuestra salida porque una opcion muy interesante es que nos permite no solamente la forma de mostrar el dato sino tambien que tipo de base de salida sera, por ejemplo si nosotros hicieramos esto:

format!("{:.3}", 3.1415927);
Anuncios

Para establecer el formato siempre lo iniciaremos con los dos puntos (:) seguido de lo que necesitamos, en este al ponerle .3 le estamos diciendo que limite a tres digitos el valor despues del punto decimal, en nuestra region es coma decimal pero los del norte lo complican todo 😂, con esto si lo probamos tenemos que obtener una salida semejante a esta:

3.142
Anuncios

Pero no solamente podemos formatear la cantidad de decimales sino que tambien podemos hacer con la base de los numeros que vamos a mostrar, como mencionamos anteriormente y otras opciones mas, para ello vamos a ver la siguiente tabla:

Formato stringRasgoDescripcion
{}DisplayEs la forma mas basica de mostrar informacion pero no es soportado por todos
{:?}DebugEs una representacion interna y es soportado por casi todos
{:b}BinarioConvierte el numero en binario
{:o}OctalConvierte el numero en octal
{:x}HexadecimalLo convierte a hexadecimal en minusculas
{:X}HexadecimalLo convierte a hexadecimal en mayusculas
{:e}ExponencialMuestra el numero con exponencial en minusculas
{:E}ExponencialMuestra el numero con exponencial en mayusculas
{:p}ApuntadorNos muestra la ubicacion en memoria del apuntador
Anuncios

Pero tambien disponemos de otros parametros para formatearlos, veamos la siguiente tabla:

AccionParametrosDescripcion
Fill/Alignment< | ^ | >Se usa para alinear y rellenar con caracteres extras
FlagsSigno | # | 0El primero es para indicar que muestre el signo + o no, la segunda es para mostrar los indicadores de conversion anteriores de una forma alternativa, el ultimo es para rellenar con ceros la cantidad que sea necesaria
width:valor$Esta relacionado con el primero y se usa para establecer el ancho de lo que debemos mostrar y en caso de no alcanzar utiliza el fill
precision.N | .N$ | .*El primero es el caso que vimos de ejemplo donde N sera la precision que usaremos, la siguiente es similar al anterior pero para los casos de usize y el ultimo se utiliza para cuando tenemos dos entradas de formato
Anuncios

Para entenderlo vamos a crear un ejemplo y veremos estos parametros en accion, para ello crearemos un proyecto que llamaremos formato, una vez creado modificaremos el codigo de main.rs con el siguiente codigo:

main.rs

fn main() {
	let v1 = format!("{:.3}", 3.1415927);
	let v2 = format!("{:b}", 55);
	let v3 = format!("{:+}!", 5);
	let v4 = format!("{:x}", 95);
	let v5 = format!("{:#x}", 95);

	println!("{}", v1);
	println!("{}", v2);
	println!("{}", v3);
	println!("{}", v4);
	println!("{}", v5);
}
Anuncios

En este codigo vamos a tener cinco variables, donde utilizaremos varios parametros para formatearlos:

  • v1, en este caso utilizamos al .N para reducir los digitos decimales a 3
  • v2, utilizamos a b para convertir el valor en binario
  • v3, aqui sumamos a signo para mostrar el signo positivo
  • v4, aqui convertiremos el valor en hexadecimal
  • v5, en este haremos lo mismo al anterior pero implementamos a numeral para cambiar la salida
Anuncios

Lo siguiente son lineas simplemente para mostrar cada uno de los valores formateados en cada variable, compilemos y veamos su salida:

tinchicus@dbn001vrt:~/lenguajes/rust/formato$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/formato`
3.142
110111
+5!
5f
0x5f
tinchicus@dbn001vrt:~/lenguajes/rust/formato$
Anuncios

Observen como se formatearon cada una de nuestras salidas, como se convirtieron los valores en binario y en hexadecimal asi como cambio la salida del hexadecimal por medio del numeral, por ultimo estas mismas opciones las podemos para las llaves que tenemos en la macro println.

Anuncios

En resumen, hoy hemos visto a format, que es, para que nos sirve, como se usa, las opciones que disponemos, los parametros que podemos utilizar, como nos ayudan y por ultimo un breve ejemplo para verlo en accion, espero les haya sido util 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
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50