Sentencias condicionales

📚 Teoría sobre if, else y match en Rust

Rust ofrece dos estructuras de control clave para la toma de decisiones: if-else y match.

if-else

Se 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 (true o false).


match

Se 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:

    1. check_number(): Usa if-else para verificar si un número es positivo o negativo.

    2. check_role(): Usa match para 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 num es mayor o igual a 0, retorna un String con el mensaje "Numero positivo".

  • Si num es negativo, retorna un String con 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 role recibido con los roles definidos.

  • Retorna un String con 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?