41 lines
1.2 KiB
Markdown
41 lines
1.2 KiB
Markdown
|
|
#Temario-BSA - Bash Scripting Avanzado
|
||
|
|
|
||
|
|
---
|
||
|
|
## ¿Qué es una "Función Pura"?
|
||
|
|
En programación, el concepto de la programación pura es aquella función que no cause efectos secundarios en el programa, cuyas funciones estén aisladas del resto del programa y no afecten a nada más que a lo que se le pide que haga.
|
||
|
|
|
||
|
|
### Un ejemplo de una "Función Impura":
|
||
|
|
```SHELL
|
||
|
|
contador=0 # Esto es un estado global
|
||
|
|
|
||
|
|
incrementar() {
|
||
|
|
#Efecto secundario: Se esta modificando una variable externa
|
||
|
|
contador=$((contador + 1))
|
||
|
|
}
|
||
|
|
|
||
|
|
incrementar
|
||
|
|
echo $contador # imprimirá 1
|
||
|
|
incrementar
|
||
|
|
echo $contador # imprimirá 2 (¡El resultado cambió sin cambiar imputs!)
|
||
|
|
```
|
||
|
|
Esta función depende de una variable global y la modifica. Si la ejecutas dos veces, el resultado cambia aunque no le pases argumentos.
|
||
|
|
|
||
|
|
### Un ejemplo de una "Función Pura":
|
||
|
|
```SHELL
|
||
|
|
sumar() {
|
||
|
|
# 1. Se usa 'local' para aislar variables del resto del script
|
||
|
|
local num1=$1
|
||
|
|
local num2=$2
|
||
|
|
|
||
|
|
local resultado=$((num1 + num2))
|
||
|
|
|
||
|
|
# 2. 'Devolver' el valor por salida estándar (stdout)
|
||
|
|
echo "$resultado"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Uso: Capturamos la salida
|
||
|
|
total=$(sumar 10 5)
|
||
|
|
echo "El total es: $total"
|
||
|
|
```
|
||
|
|
Esta función es aislada. Recibe datos, calcula y "devuelve" el dato imprimiéndolo (stdout), sin tocar nada más.
|