Estructuras condicionales en Solidity

Solidity

En este tutorial vamos a aprender cuáles son las estructuras condicionales que puedes usar en Solidity. Si ya sabes programar con C, JavaScript, PHP, Python o incluso con lenguajes de programación más arcaicos como Pascal, seguramente conozcas ya el condicional if o sus variantes else o else if. En Solidity nos encontramos con las mismas estructuras salvo con la ausencia de la estructura switch, que no existe en este lenguaje.

A continuación vamos a ver cuáles son las principales estructuras condicionales que existen en Solidity.

La estructura condicional if

El condicional if nos permitirá evaluar una condición. Si la condición se cumple, se ejecutará el código que incluyamos entre llaves, en el interior de la estructura if. De lo contrario, no se ejecutará.

Se define mediante la sentencia if, seguida de la condición a comprobar entre paréntesis y de una llave de apertura y otra de cierre. Entre ambas llaves agregaremos el código que se ejecutará si se cumple la condición indicada:

if (condicion) {
    // Sentencias
}

En el siguiente ejemplo tenemos una función llamada comprobarMayor que incluye una sentencia if. El código que incluyamos entre las llaves de apertura y de cierre del bloque if solamente se ejecutará si valor es mayor que 100. Es decir, que la función devolverá true si valor es mayor que 100 o false en otro caso:

pragma solidity ^0.8.13;

contract MiContrato
{
    uint valor;

    function comprobarMayor() public view returns(bool)
    {
        if (valor > 100) {
             return true;
        }
        return false;
    }
}

La estructura condicional if...else

La sentencia if también se puede acompañar de una sentencia else, que se ejecutará cuando no se cumpla la condición especificada. Su sintaxis es la siguiente:

if (condicion) {
    // Sentencias si se cumple la condición
} else {
    // Sentencias si no se cumple
}

En el siguiente ejemplo, el código que incluyamos entre las llaves de apertura y de cierre del bloque if solamente se ejecutará si valor es igual a 100. De lo contrario, se ejecutará el código de la sentencia else:

pragma solidity ^0.8.13;

contract MiContrato
{
    uint valor;
    function comprobarValor() public view returns(bool)
    {
        if (valor == 100) {
            return  true;
        } else {
            return false;
        }
    }
}

La estructura condicional if...else if

También es posible usar sentencias else if para hacer referencia a otras posibles condiciones. Pueden concatenarse varias sentencias else if una tras otra, pero de haber una sentencia else, siempre deberá ser la última. Su sintaxis es la siguiente:

if (condicion1) {
    // Si se cumple la primera condición
} else if (condicion2) {
    // Si se cumple la segunda condición
} else {
    // Si no se cumple ninguna condición
}

En el siguiente ejemplo devolvemos la cadena Mayor que 100 si valor es mayor que 100. Si la condición anterior no se cumple, entonces pasamos a evaluar la siguiente condición, en donde hemos indicado que si valor es menor que 100, entonces devolveremos la cadena Menor que 100. Si la condición anterior no se cumple, entonces se ejecutará la sentencia else, en la que devolvemos Igual a 100.

pragma solidity ^0.8.13;

contract MiContrato
{
    uint valor;

    function comprobarValor() public view returns(bytes32)
    {
        if (valor > 100) {
            return  'Mayor que 100';
        } else if (valor < 100) {
            return  'Menor que 100';
        } else {
            return  'Igual a 100';
        }
    }
}

Cuando se incluyen sentencias return, el último else suele ser redundante, por lo que también podríamos definir así la función anterior:

pragma solidity ^0.8.13;

contract MiContrato
{
    uint valor;

    function comprobarValor() public view returns(bytes32)
    {
        if (valor > 100) {
            return  'Mayor que 100';
        } else if (valor < 100) {
            return  'Menor que 100';
        }
        
        return  'Igual a 100';
    }
}

Esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”