Sentencias condicionales
📚 Teoría sobre if, else y match en Rust
if, else y match en RustRust ofrece dos estructuras de control clave para la toma de decisiones: if-else y match.
✅ if-else
if-elseSe usa para tomar decisiones en función de una condición booleana.
📌 Sintaxis básica:
rustCopiarEditarif condicion {
// Código si la condición es verdadera
} else {
// Código si la condición es falsa
}📌 Ejemplo en Rust:
rustCopiarEditarlet num = 10;
if num > 0 {
println!("El número es positivo");
} else {
println!("El número es negativo");
}📌 Cuándo usar if-else
Cuando se necesita verificar una condición booleana única.
Cuando solo hay dos opciones (
trueofalse).
✅ match
matchSe usa para comparar un valor con múltiples posibles casos, similar a switch en otros lenguajes.
📌 Sintaxis básica:
📌 Ejemplo en Rust:
📌 Cuándo usar match
Cuando hay varias condiciones posibles.
Cuando se trabaja con enum, strings o patrones complejos.
Código en Soroban
Nos vamos a una ruta donde queramos crear nuestro proyecto y ponemos el siguiente comando:
Borramos el contrato generado en lib.rs y ponemos el siguiente código
📌 Explicación general del código
Usa
#![no_std], lo que significa que no usa la biblioteca estándar de Rust.Importa módulos de
soroban_sdk, necesarios para escribir contratos inteligentes en Soroban.Define una estructura de contrato llamada
ConditionalSt.Implementa dos funciones clave:
check_number(): Usaif-elsepara verificar si un número es positivo o negativo.check_role(): Usamatchpara asignar permisos según el rol de un usuario.
🛠 Explicación de las Funciones
1️⃣ check_number
Descripción: Determina si un número es positivo o negativo.
Mecanismo:
Recibe un número entero (i32) como entrada.
Emplea una estructura condicional if-else para evaluar el valor de
num.Si
numes mayor o igual a 0, retorna unStringcon el mensaje "Numero positivo".Si
numes negativo, retorna unStringcon el mensaje "Numero negativo".
2️⃣ check_role
Descripción: Asigna permisos según el rol del usuario.
Mecanismo:
Define tres roles fijos utilizando el macro
symbol_short!:Admin
User
Guest
Utiliza una estructura de control match para comparar el
rolerecibido con los roles definidos.Retorna un
Stringcon el permiso correspondiente:"Acceso total" si el rol es Admin.
"Acceso limitado" si el rol es User.
"Solo lectura" si el rol es Guest.
Si el rol no coincide con ninguno de los predefinidos, retorna "Rol no reconocido".
📌 Resumen General Este contrato inteligente demuestra el uso de condicionales y estructuras de control en Soroban. A través de check_number se evalúa la positividad o negatividad de un número, mientras que check_role asigna permisos basándose en roles específicos.
Compilación del contrato
Ejecutamos lo siguiente:
Despliegue del contrato
Para Mac y Linux el salto de línea es con el carácter " \" y en Windows con el carácter " ´ "
Reemplaze el simbolo * por el respectivo carácter de salto de linea a su sistema operativo.

Pruebas del contrato
Para Linux y Mac el salto de línea de la instrucción es con el carácter " \ " para Windows con el carácter " ` "
Función get_length

Función check_role

Last updated
Was this helpful?

