![](https://canessaalvamiguel.dev/wp-content/uploads/2023/03/scala-logo5.png)
val
La palabra reservada val
se utiliza para declarar valores inmutables. Una vez que se asigna un valor a una variable val
, no se puede cambiar. Es similar a una constante en otros lenguajes de programa
val x = 5
En el ejemplo anterior, se crea una variable x
con un valor inicial de 5
. Como se trata de una variable val
, no se puede cambiar posteriormente.
var
La palabra reservada var
se utiliza para declarar variables mutables. Una vez que se asigna un valor a una variable var
, se puede cambiar en cualquier momento.
var x = 5
x = 10
En el ejemplo anterior, se crea una variable x
con un valor inicial de 5
. Luego, se cambia su valor a 10
.
def
La palabra reservada def
se utiliza para definir funciones. Las funciones son bloques de código que se pueden llamar con diferentes argumentos. La sintaxis general de una función es la siguiente:
def functionName(arg1: type, arg2: type, ...): returnType = {
// Cuerpo de la función
}
Por ejemplo, la siguiente función toma dos argumentos enteros y devuelve su suma:
def sum(a: Int, b: Int): Int = {
a + b
}
lazy val
La palabra reservada lazy val
se utiliza para declarar valores perezosos (lazy). Esto significa que el valor se calculará solo cuando se acceda a él por primera vez. Los valores perezosos son útiles cuando el cálculo del valor puede ser costoso y no se necesita inmediatamente.
lazy val x = {
println("Calculando el valor de x")
5
}
En el ejemplo anterior, se declara una variable x
que se calcula perezosamente. La primera vez que se accede a la variable x
, se imprimirá “Calculando el valor de x” y se calculará el valor 5
. Si se accede a la variable x
nuevamente, el valor calculado anteriormente se devolverá sin volver a calcularlo.
En resumen, las palabras reservadas val
, var
, def
y lazy val
se utilizan para declarar valores inmutables, variables mutables, funciones y valores perezosos respectivamente en Scala. Es importante entender la diferencia entre estos tipos de variables y cómo se pueden utilizar para escribir un código Scala claro y conciso.