En este tema, aprenderemos sobre las funciones y métodos en Scala, que son fundamentales para escribir código modular y reutilizable. Veremos cómo definir y utilizar funciones, la diferencia entre funciones y métodos, y algunos conceptos avanzados como funciones de orden superior y funciones anónimas.
Contenido
- Definición de Funciones
- Definición de Métodos
- Diferencias entre Funciones y Métodos
- Ejemplos Prácticos
- Ejercicios
- Definición de Funciones
En Scala, una función es un objeto que puede ser asignado a una variable, pasado como argumento a otra función, o devuelto como resultado de una función. Las funciones se definen utilizando la palabra clave def
.
Sintaxis Básica
def nombreFuncion(param1: Tipo1, param2: Tipo2): TipoRetorno = { // cuerpo de la función valorRetorno }
Ejemplo
def suma(a: Int, b: Int): Int = { a + b } val resultado = suma(3, 4) println(resultado) // Imprime: 7
En este ejemplo, hemos definido una función suma
que toma dos parámetros de tipo Int
y devuelve un valor de tipo Int
.
- Definición de Métodos
Un método en Scala es similar a una función, pero está asociado a un objeto o clase. Los métodos también se definen utilizando la palabra clave def
.
Sintaxis Básica
class MiClase { def nombreMetodo(param1: Tipo1, param2: Tipo2): TipoRetorno = { // cuerpo del método valorRetorno } }
Ejemplo
class Calculadora { def suma(a: Int, b: Int): Int = { a + b } } val calc = new Calculadora() val resultado = calc.suma(3, 4) println(resultado) // Imprime: 7
En este ejemplo, hemos definido una clase Calculadora
con un método suma
que realiza la misma operación que la función suma
del ejemplo anterior.
- Diferencias entre Funciones y Métodos
Característica | Funciones | Métodos |
---|---|---|
Definición | def nombreFuncion |
def nombreMetodo |
Asociación | Independiente | Asociado a un objeto o clase |
Llamada | nombreFuncion(args) |
objeto.nombreMetodo(args) |
Asignación a Variable | Sí | No |
- Ejemplos Prácticos
Función como Parámetro
def aplicarOperacion(a: Int, b: Int, operacion: (Int, Int) => Int): Int = { operacion(a, b) } val suma = (x: Int, y: Int) => x + y val resultado = aplicarOperacion(3, 4, suma) println(resultado) // Imprime: 7
Método en una Clase
class Operaciones { def multiplicar(a: Int, b: Int): Int = { a * b } } val op = new Operaciones() val resultado = op.multiplicar(3, 4) println(resultado) // Imprime: 12
- Ejercicios
Ejercicio 1: Definir una Función
Define una función llamada resta
que tome dos parámetros de tipo Int
y devuelva la resta de ambos.
Ejercicio 2: Definir un Método
Define una clase Matematica
con un método dividir
que tome dos parámetros de tipo Int
y devuelva la división del primero por el segundo.
Soluciones
Solución Ejercicio 1
def resta(a: Int, b: Int): Int = { a - b } val resultado = resta(10, 4) println(resultado) // Imprime: 6
Solución Ejercicio 2
class Matematica { def dividir(a: Int, b: Int): Int = { a / b } } val mat = new Matematica() val resultado = mat.dividir(12, 3) println(resultado) // Imprime: 4
Conclusión
En esta sección, hemos aprendido a definir y utilizar funciones y métodos en Scala. Hemos visto la sintaxis básica, las diferencias entre funciones y métodos, y hemos trabajado con ejemplos prácticos. Ahora estás preparado para avanzar a temas más complejos como las funciones de orden superior y las funciones anónimas.
Curso de Programación en Scala
Módulo 1: Introducción a Scala
- Introducción a Scala
- Configuración del Entorno de Desarrollo
- Conceptos Básicos de Scala: Sintaxis y Estructura
- Variables y Tipos de Datos
- Operaciones Básicas y Expresiones
Módulo 2: Estructuras de Control y Funciones
- Sentencias Condicionales
- Bucles e Iteraciones
- Funciones y Métodos
- Funciones de Orden Superior
- Funciones Anónimas
Módulo 3: Colecciones y Estructuras de Datos
- Introducción a las Colecciones
- Listas y Arreglos
- Conjuntos y Mapas
- Tuplas y Opciones
- Coincidencia de Patrones
Módulo 4: Programación Orientada a Objetos en Scala
- Clases y Objetos
- Herencia y Rasgos
- Clases Abstractas y Clases Caso
- Objetos Compañeros
- Objetos Singleton
Módulo 5: Programación Funcional en Scala
- Inmutabilidad y Funciones Puras
- Estructuras de Datos Funcionales
- Mónadas y Funtores
- Comprensiones For
- Manejo de Errores en Programación Funcional
Módulo 6: Conceptos Avanzados de Scala
- Conversiones y Parámetros Implícitos
- Clases de Tipo y Polimorfismo
- Macros y Reflexión
- Concurrencia en Scala
- Introducción a Akka