val frente a var
Vinculaciones inmutables y mutables
val frente a var es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
Dos formas de dar nombre a los valores
En Scala, puede vincular un nombre a un valor mediante val o var.
val crea un vínculo inmutable: una vez asignado, nunca puede apuntar a otro valor. var crea un vínculo mutable que puede reasignarse posteriormente.
Elegir entre ambos es uno de los primeros hábitos que adquiere un ingeniero backend de Scala.
val name = "Ada"
var score = 10Definir un val
Un val es de solo lectura. Se asigna una vez y el compilador garantiza que permanece igual.
Esto facilita la comprensión del código: un val nunca le sorprenderá con un valor modificado en otro lugar.
object Main extends App {
val pi = 3.14
println(pi)
}Reasignar un val produce un error
Intentar reasignar un val provoca un error de compilación, no un fallo en tiempo de ejecución. El compilador lo detiene antes de que el programa llegue a ejecutarse.
El fragmento siguiente fallaría con reassignment to val.
val country = "Turkey"
country = "Spain" // error: reassignment to valDefinir un var
Un var puede reasignarse tantas veces como quiera, siempre que el nuevo valor tenga un tipo compatible.
Use var cuando un valor realmente necesite cambiar con el tiempo, como un contador en un bucle.
object Main extends App {
var count = 0
count = count + 1
count = count + 1
println(count)
}var conserva su tipo
Aunque un var puede reasignarse, su tipo queda fijado al definirlo.
Si level comienza como un Int, después no puede almacenar un String. El compilador rechaza la incompatibilidad.
var level = 1
level = 5 // ok, still an Int
level = "high" // error: type mismatchPrefiera val de forma predeterminada
El estilo idiomático de Scala favorece val en casi todos los casos. La inmutabilidad evita toda una clase de errores y hace que el código concurrente sea más seguro.
- Use primero
val. - Cambie a
varsolo cuando realmente necesite mutabilidad.
Reescribir var como val
Muchos bucles que parecen necesitar un var pueden expresarse con un val y una expresión.
Aquí se calcula una suma con un rango y sum, sin necesidad de mutación.
object Main extends App {
val total = (1 to 5).sum
println(total)
}Ámbito de una vinculación
Tanto val como var viven dentro del bloque { ... } en el que se definen.
Una vinculación declarada dentro de un bloque no es visible fuera de él. Esto mantiene ordenados los nombres y evita su reutilización accidental.
object Main extends App {
val outer = 1
{
val inner = 2
println(outer + inner)
}
// inner is not visible here
}val perezoso
Un lazy val se calcula solo la primera vez que se usa y después se almacena en caché.
Esto resulta útil para valores costosos que quizá no siempre necesite. El cuerpo se ejecuta como máximo una vez.
object Main extends App {
lazy val greeting = { println("computing"); "Hi" }
println("before")
println(greeting)
println(greeting)
}val con tipo explícito
Puede anotar el tipo de una vinculación después de dos puntos. Esto documenta la intención y permite ampliar el tipo deliberadamente.
Aquí amount se declara como un Double, aunque 10 parezca un Int.
val amount: Double = 10
val label: String = "price"val frente a var, lado a lado
Ambos se comportan igual hasta que intenta reasignarlos.
val x: se asigna una vez y queda fijo para siempre.var y: se asigna y se reasigna libremente.
El programa siguiente incrementa únicamente el var.
object Main extends App {
val base = 100
var bonus = 0
bonus = bonus + 25
println(base + bonus)
}Comprobación rápida
Compruebe lo que ha aprendido sobre val y var.
Resumen
Ha aprendido las dos formas de vincular nombres en Scala.
vales inmutable y es la opción predeterminada.vares mutable y se reserva para los valores que deben cambiar.- Reasignar un
valproduce un error de compilación. - Los tipos son fijos en ambos casos;
lazy valpospone el cálculo.
Preguntas frecuentes
¿La lección «val frente a var» es gratis?
Sí — el texto completo de «val frente a var» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué aprenderé en «val frente a var»?
Vinculaciones inmutables y mutables Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?
No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «val frente a var»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?
Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.