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.
Contenidos
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.