5.02 Expresiones y condiciones anidadas

5.02 Expresiones y condiciones anidadas

Anidar inputs, operadores y funciones

Es muy normal que en nuestras fórmulas usemos funciones, operadores e input values dentro de otras funciones. Esto se conoce como anidado o nesting.

Cuando combinamos inputs, operadores y/o funciones de manera que devuelvan un sólo valor, se conoce como expresión. Las expresiones pueden ser tan sencillas o complejas como queramos, siempre y cuando devuelvan un sólo valor.

Esto implica que los argumentos de una función (recuerda, ess valores que introducíamos entre los paréntesis) no tienen por qué ser sólo una referencia a una propiedad o un valor literal, como decíamos arriba; cualquier expresión puede ser a su vez un argumento siempre y cuando devuelva un valor único y éste sea del tipo correcto.

Por ejemplo, la sencilla fórmula add(100, 20) nos devolverá el resultado de sumar 100 y 20.

Pero podríamos convertirla en una expresión más complicada:

add(100, mutiply (10,2))

En este caso, el segundo argumento es el resultado de una función; la función mutiply() a la que hemos pasado como argumentos 10 y 2, para que los multiplique.

Ambas operaciones darán como resultado lo mismo: 120.

Un ejemplo algo más complicado, por ejemplo, lo encontraríamos al introducir como valores las referencias a otras propiedades:

Si quisiéramos, por ejemplo, calcular el precio total de un item aplicándole un IVA diferente, haríamos lo siguiente:

add(prop("Precio"),multiply(prop("Precio"),prop("IVA")))

En el que, primero, multiplicaríamos el Precio por el IVA → multiply(prop("Precio"), prop("IVA"))

y, ese resultado, lo sumaríamos al Precio → add(prop("Precio"),multiply(prop("Precio"),prop("IVA")))

image

Condiciones anidadas

El fenómeno de anidado lo encontraremos sobre todo con las funciones de tipo if(). Es decir, las funciones que nos sirven para comprobar si se cumple una condición o no. Si se cumple, veremos el segundo argumento y, si no, veremos el tercero:

if( 2 == 1, "Igual", "No es igual" ) → "No es igual"

Pero lo más frecuente es que lo que queramos sea que nos devuelva uno u otro resultado dependiendo del primer argumento.

Un uso muy común de este tipo de estructuras sería el de marcar como check una propiedad si esta se encuentra en estado "Completado"

if(prop("Status") == "completada", true, false)

image

También podemos usar las funciones and() y or() para comprobar dos expresiones diferentes y si ambas se cumplen.

Por ejemplo, en la fórmula de abajo estaríamos comprobando si un producto está tanto "Pagado" como "Enviado", en cuyo caso aparecería como "Completado". En caso contrario, el mensaje que aparecería sería "En progreso"

if(and(prop("Pagado"), prop("Enviado")), "Completado", "En Progreso")

image

Por último, es posible que a veces queramos mayor granularidad que un true o false, sino poder hacer diferentes cosas si más condiciones se cumplen.

Por ejemplo, podríamos comprobar si el estado de ánimo de cada día es "feliz", "apático" o "infeliz" y que nos represente con un emoji cada uno de ellos:

if(prop("Mood") == "feliz", "😀", if(prop("Mood") == "apático", "😕", "😩"))

image

Esto se traduciría en:

Si "Mood" es "feliz", muestra "😀";

Si lo anterior no se cumple, una de dos; si "Mood" es "normal", muestra "😕"

Si no se cumple ninguna de las anteriores, muestra "😩"

Contacto

🐦 twitter: @elenayuscula

📇 linkedin: elenamadrigal

🖋 blog/portfolio: elenadrigal.com

Este sitio ha sido construído en Notion y Super.so. (Si quieres aprender a construir tu propio site con Notion, echa un vistazo al curso Tu Página en Notion, donde enseño todo el proceso detallado)

Ilustraciones: Miroodles