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: 7En 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: 7En 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: 7Mé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: 6Solució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: 4Conclusió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
