Introducir
Modo de estrategia vs programación funcional
Al introducir expresiones Lambda en Java8, desde la codificación rígida al modo de estrategia, y luego a la optimización interna de la clase paso a paso. Teóricamente, las funciones que utilizamos con expresiones Lambda también se pueden implementar con patrones de estrategia y funciones anónimas, pero ¿por qué deberíamos introducir expresiones Lambda?
Lo que entiendo temporalmente incluye los siguientes aspectos:
- El código no es fácil de leer y la estructura es compleja;
- Cada estrategia adicional requiere una nueva clase de implementación, que no es fácil de mantener;
- Si hay 10,000 situaciones, ¿desea crear 10,000 nuevas estrategias o clases anónimas?
La programación funcional puede resolver fácilmente los problemas anteriores. Las ventajas y la aplicación de la programación funcional:
- Fácil de refactorizar, depurar y probar
- Aplicación general: cálculo matemático, inteligencia artificial.
- Aplicación local: ha florecido en todas partes
El concepto
——Programando con funciones, debe volver al concepto de la función misma:
Una función, en matemáticas, es una correspondencia entre dos conjuntos: cada elemento en el conjunto de valores de entrada puede corresponder a un elemento en el único conjunto de valores de salida. Por ejemplo , la relación entre el número real x y su cuadrado x 2 es una función. Si se usa 3 como valor de entrada de esta función, el valor de salida resultante es 9. -Wikipedia
Nota:
- Para distinguir el concepto de la forma de expresión La
función enfatiza una relación de mapeo y la implementación específica puede tener muchas formas: para el lado de la aplicación de la función, la implementación específica puede ser ignorada. - Una función puede tener diferentes expresiones. La expresión de la
relación cuadrada puede ser: y = x 2 , expansión polinómica, expansión de Taylor, etc.
Caracteristicas
Sin efectos secundarios (funciones puras): no modifica el estado del programa
- Cita transparente
Ciudadano de primera clase
- Pasar como parámetro
- Devolver como resultado
- Almacenar en estructura de datos
Funciones de orden superior: pueden simplificar el procesamiento de parámetros complejos
- Recibir al menos una función como parámetro
- El resultado es una función.
Solicitud
- Cierre: un
ejemplo de cierre en una función especial js que hace referencia a una variable de ámbito externo
<script>
var global = "outer"
function outer(){
var global = "inner";
var a = 5
function inner(){
console.log(global)
console.log(a++)
}
return inner;
}
var r = outer();
r()
</script>
- Curry: la técnica de modularización de funciones y reutilización de código para transformar una función multiparamétrica en una serie de procesos que solo aceptan un parámetro