En aquest tema, explorarem les funcions i els mètodes en Scala. Les funcions són blocs de codi reutilitzables que poden ser cridats amb diferents arguments per realitzar una tasca específica. Els mètodes són similars a les funcions, però estan associats a objectes o classes.
Continguts
Definició de Funcions
En Scala, les funcions es defineixen amb la paraula clau def, seguida del nom de la funció, els paràmetres entre parèntesis i el tipus de retorn després d'una fletxa (=>). El cos de la funció es troba entre claus {}.
def nomFuncio(paràmetre1: Tipus1, paràmetre2: Tipus2): TipusRetorn = {
// Cos de la funció
valorRetorn
}Exemple
En aquest exemple, suma és una funció que pren dos enters com a paràmetres i retorna la seva suma.
Paràmetres i Tipus de Retorn
Les funcions poden tenir zero o més paràmetres, i el tipus de retorn pot ser qualsevol tipus de dades de Scala. Si una funció no retorna cap valor, el tipus de retorn és Unit.
Exemple
En aquest exemple, saluda és una funció que pren un paràmetre de tipus String i no retorna cap valor (Unit).
Funcions Recursives
Les funcions recursives són funcions que es criden a si mateixes. Per definir una funció recursiva en Scala, cal afegir la paraula clau @tailrec per indicar que la funció és recursiva.
Exemple
@tailrec
def factorial(n: Int, acumulador: Int = 1): Int = {
if (n <= 1) acumulador
else factorial(n - 1, n * acumulador)
}En aquest exemple, factorial és una funció recursiva que calcula el factorial d'un nombre.
Mètodes
Els mètodes són similars a les funcions, però estan associats a objectes o classes. Es defineixen de la mateixa manera que les funcions, però dins d'una classe o objecte.
Exemple
class Calculadora {
def suma(a: Int, b: Int): Int = {
a + b
}
}
val calc = new Calculadora()
println(calc.suma(3, 4)) // Imprimeix 7En aquest exemple, suma és un mètode de la classe Calculadora.
Exemples Pràctics
Exemple 1: Funció per calcular el quadrat d'un nombre
Exemple 2: Mètode per calcular la longitud d'una cadena
class Cadena {
def longitud(cadena: String): Int = {
cadena.length
}
}
val c = new Cadena()
println(c.longitud("Scala")) // Imprimeix 5Exercicis
Exercici 1: Funció per calcular el màxim de dos nombres
Defineix una funció maxim que prengui dos enters com a paràmetres i retorni el màxim dels dos.
Solució
Exercici 2: Mètode per invertir una cadena
Defineix un mètode inverteix dins d'una classe Cadena que prengui una cadena com a paràmetre i retorni la cadena invertida.
Solució
class Cadena {
def inverteix(cadena: String): String = {
cadena.reverse
}
}
val c = new Cadena()
println(c.inverteix("Scala")) // Imprimeix "alacS"Conclusió
En aquesta secció, hem après a definir funcions i mètodes en Scala, a treballar amb paràmetres i tipus de retorn, i a implementar funcions recursives. També hem vist exemples pràctics i hem resolt exercicis per reforçar els conceptes apresos. En el proper tema, explorarem les funcions d'ordre superior, que ens permetran treballar amb funcions com a valors.
Curs de Programació en Scala
Mòdul 1: Introducció a Scala
- Introducció a Scala
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Scala: Sintaxi i Estructura
- Variables i Tipus de Dades
- Operacions Bàsiques i Expressions
Mòdul 2: Estructures de Control i Funcions
- Declaracions Condicionals
- Bucles i Iteracions
- Funcions i Mètodes
- Funcions d'Ordre Superior
- Funcions Anònimes
Mòdul 3: Col·leccions i Estructures de Dades
- Introducció a les Col·leccions
- Llistes i Arrays
- Conjunts i Mapes
- Tuples i Options
- Coincidència de Patrons
Mòdul 4: Programació Orientada a Objectes en Scala
- Classes i Objectes
- Herència i Traits
- Classes Abstractes i Classes Case
- Objectes Companys
- Objectes Singleton
Mòdul 5: Programació Funcional en Scala
- Immutabilitat i Funcions Pures
- Estructures de Dades Funcionals
- Monads i Functors
- For-Comprehensions
- Gestió d'Errors en la Programació Funcional
Mòdul 6: Conceptes Avançats de Scala
- Conversions i Paràmetres Implícits
- Classes de Tipus i Polimorfisme
- Macros i Reflexió
- Concurrència en Scala
- Introducció a Akka
