Funciones de orden superior de Scala

Funciones de orden superior de Scala
Cuando una función acepta otra función como parámetro o devuelve otra función como salida, se conoce como una función de orden superior. Esto se refiere a funciones que interactúan con otras funciones. Es importante tener en cuenta que esta función de orden superior se puede usar con funciones y métodos que devuelven las funciones como resultados o toman las funciones como parámetros. Esto es factible porque el compilador Scala permite la conversión de métodos en funciones. La idea de las funciones de orden superior en Scala en Ubuntu 20.04 se explica en este artículo.

Importancia de las funciones de orden superior

Con respecto a las funciones de orden superior, algunos puntos clave incluyen:

    • Las funciones de orden superior son concebibles porque el lenguaje de programación de Scala trata las funciones como valores de primera clase. Esto significa que, al igual que otros valores, las funciones se pueden suministrar como parámetros o salidas, lo cual es útil para proporcionar una forma flexible de escribir los programas.
    • Al construir una composición de funciones donde se pueden crear funciones a partir de otras funciones, es ventajoso. El método de composición conocido como "composición de funciones" implica el uso de dos funciones previamente compuestas para crear una sola función.
    • Las funciones lambda y las funciones anónimas también se pueden crear con su ayuda. Las funciones sin nombre pero, sin embargo, la función como funciones se conocen como funciones anónimas.
    • Se aplica a los programas y reduce la cantidad de líneas de código sin sentido.

Ejemplo 1: Uso de una función para tomar otra función como argumento

Consideremos el primer ejemplo de una función de orden superior. Pasamos la función en una función dada como parámetro.


Aquí, el objeto se designa como "myobject". Luego, dentro de la definición principal del objeto, llamamos a una función "func". La función "func" toma el valor numérico y la función "multiplicybythree" como entrada. Nuevamente invocamos la función "func" para imprimir el valor de "x" que se pasa como una entrada dentro de la "F". Por último, establecemos la operación "X*3" en la función "MultiplybyThree".

A medida que pasamos la función "multiplicybythree" dentro de la otra función "func", la función "func" genera el resultado de la función "multiplybythree" de la siguiente manera:

Ejemplo 2: Uso de la función anónima como lambda

Una función anónima no tiene un nombre pero realiza la misma función. Cuando no tiene la intención de repetir una función más tarde, crear una versión anónima es una buena idea. En Scala, los operadores de comodines "=>" Rocket y "_" Subsbore se pueden usar para generar funciones anónimas.
Aquí hay uno para ilustrar:


Dentro del método principal del objeto "myDemo", creamos dos variables. Las variables se declaran como "res1" y "res2". La variable "Res1" se inicializa con la función anónima utilizando el operador "=>". La función anónima se establece con los parámetros X e Y y en el lado derecho del operador "=>" del cohete establecemos la ecuación "x+y". Después de eso, tenemos otra función anónima que se emplea con el comodín "_". Dentro del método println, llamamos al "res1" y "res2" respectivamente y les asignamos dos valores.

Los resultados para ambas funciones anónimas se generan de la siguiente manera:

Ejemplo 3: Uso de la expresión multilínea

El término "expresión multilínea" se refiere a las expresiones que abarcan muchas líneas. Al utilizar las expresiones multilíneas en Scala, use precaución. Para evitar problemas con respecto a la expresión multilínea, puede usar los siguientes métodos:


El objeto "mytest" tiene la definición de tres funciones. La primera función se define como "Sum1" que toma los parámetros "I" y "J". Los valores de entrada "I" y "J" se establecen como "I+J" dentro del bloque de la función "Sum1". A continuación, tenemos otra función como "Sum2" que también toma los valores de entrada y también establece la operación "I+J". Después de eso, definimos el método principal donde se declaran dos variables "resultado1" y "resultado2". Estas variables se denominan funciones "Sum1" y "Sum2" para aprobar los valores contra "I" y "J".

La salida obtenida por ambas funciones "Sum1" y "Sum2" tienen los mismos resultados.

Ejemplo 4: Uso de una función que lleva

Un método en Scala puede tener numerosas listas de parámetros. Una función que acepta las listas de argumentos faltantes como argumentos se produce cuando se llama a una función con menos listas de parámetros de lo que requiere. En otras palabras, es un método para cambiar una función que acepta varios parámetros en uno que solo acepta uno.


Aquí, creamos una función "agregar" que toma dos argumentos por separado. La "P" es el primer argumento y "Q" es el segundo argumento. Luego, declaramos una variable "resultado1" en el método principal. La variable "result1" se llama función "Agregar" y establece los valores para "P" y "Q". Además, pasamos el argumento único para la función "Agregar" que se llama en la variable "addValues". AddValues ​​también toma los valores de argumento de un número.

Los resultados del código anterior al compilar son los siguientes:

Ejemplo 5: Uso de una función anidada

Siendo un lenguaje de función de primera clase, Scala le permite pasar las funciones, devolver las funciones, componer las funciones, usar las funciones anidadas y más. La definición y el llamado de las funciones anidadas se demuestran en el siguiente ejemplo:


Dentro de la función "Sub1", definimos otra función "Sub2" que evalúa la diferencia entre "A-B". Fuera de la función Sub2, llamamos al "Sub2" que toma el valor del argumento "X" y el "Sub2 (Y, Z)". A continuación, declaramos un "resultado" variable que se denomina función Sub1 y pasó el valor numérico para ser evaluado para una operación diferente.

El siguiente es el resultado de operación diferente generado por el código anterior:

Ejemplo 6: Uso de una función con parámetros de longitud variable

Puede definir las funciones con parámetros de longitud variable en Scala. Se puede aprobar cualquier cantidad de argumentos al llamar a la función.


A la función "agregar", establecemos la variable "mysum" que inicialmente es cero. Luego, tenemos para el bucle que itera sobre los números y los incrementos por el mysum. Dentro de la principal, llamamos a la función Agregar y le pasamos los valores numéricos.

La longitud de la variable "mysum" se imprime en la pantalla.

Conclusión

Descubrimos en el artículo mencionado anteriormente que usar las funciones de orden superior en Scala puede hacer que la base de código sea simple y fácil de comprender para las operaciones. Las funciones de orden superior son aquellas que aceptan o devuelven las entradas de otras funciones. También examinamos los ejemplos que demuestran las diversas aplicaciones para estas funciones de orden superior. Además, aprendimos a entregar las funciones anónimas como funciones de alto orden.