Expresiones frente a sentencias
Todo devuelve un valor
Expresiones frente a sentencias es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 4 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.
Todo es una expresión
En muchos lenguajes, if y los bloques son sentencias que realizan una acción, pero no producen ningún valor. En Scala son expresiones que se evalúan y producen un valor.
Este cambio es fundamental para la programación funcional en Scala.
val max = if (3 > 2) 3 else 2if como expresión
Un if/else de Scala devuelve el valor de la rama que se ejecuta. Puede asignar directamente ese resultado a un val.
No necesita una variable mutable que establezca dentro de las ramas.
object Main extends App {
val temp = 18
val label = if (temp > 20) "warm" else "cool"
println(label)
}Los bloques devuelven su última línea
Un bloque { ... } es, a su vez, una expresión. Su valor es el valor de la última expresión que contiene.
Aquí el bloque se evalúa como 30, que se convierte en el valor de result.
object Main extends App {
val result = {
val a = 10
val b = 20
a + b
}
println(result)
}No se necesita un return explícito
Como el cuerpo de un método es una expresión, su valor es simplemente el de la última expresión evaluada. La palabra clave return se usa rara vez.
Los dos métodos siguientes se comportan igual, pero el idiomático omite return.
def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }match también es una expresión
La coincidencia de patrones con match también produce un valor, por lo que resulta perfecta para transformar entradas en resultados.
Cada rama de caso produce el valor correspondiente a esa rama.
object Main extends App {
val day = 3
val name = day match {
case 1 => "Mon"
case 3 => "Wed"
case _ => "Other"
}
println(name)
}Las expresiones se pueden componer
Como las expresiones devuelven valores, puede anidarlas y combinarlas libremente.
Un if puede ser el argumento de una función o formar parte de un cálculo más grande, sin necesidad de variables temporales.
object Main extends App {
val n = 7
println("sign: " + (if (n >= 0) "+" else "-"))
}Las sentencias siguen existiendo
No todo produce un valor útil. Las operaciones realizadas únicamente para generar efectos secundarios, como println o una asignación, se evalúan como Unit.
Estas son las expresiones con aspecto de sentencia de Scala.
val x: Unit = println("hello") // value is ()Evite var con expresiones
El estilo basado en expresiones permite reemplazar los patrones que usan var mutable. En lugar de declarar un var y asignarle valores en las ramas, asigne el if completo a un val.
object Main extends App {
val score = 85
val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
println(grade)
}for produce valores
Un for con yield es una expresión que construye una colección nueva, en lugar de limitarse a iterar para producir efectos secundarios.
Esto convierte la iteración en una transformación que produce un valor.
object Main extends App {
val squares = for (i <- 1 to 4) yield i * i
println(squares)
}Por qué es importante para el código backend
El código orientado a expresiones tiende a ser más corto, tiene menos elementos móviles y resulta más fácil de probar.
- Menos variables mutables significan menos errores.
- Los resultados fluyen de forma natural a partir de las entradas.
- Se compone bien con las bibliotecas funcionales de Scala.
Estilo de sentencias frente a estilo de expresiones
Compare las dos formas de pensar. El estilo de sentencias modifica una variable; el estilo de expresiones devuelve directamente un valor.
Scala permite hacer ambas cosas, pero prefiere el estilo de expresiones.
var s = "" // statement style
if (true) s = "yes" else s = "no"
val e = if (true) "yes" else "no" // expression styleComprobación rápida
¿En qué se evalúa un if/else en Scala?
Resumen
Scala favorece las expresiones que producen valores frente a las sentencias que solo modifican el estado.
if,match, los bloques yfor/yielddevuelven valores.- Los cuerpos de los métodos devuelven su última expresión; rara vez se necesita
return. - El código con efectos secundarios devuelve
Unit. - Este estilo reduce el uso de
vary los errores.
Aprende Scala con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 143
Preguntas frecuentes
¿La lección «Expresiones frente a sentencias» es gratis?
Sí — el texto completo de «Expresiones frente a sentencias» 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 «Expresiones frente a sentencias»?
Todo devuelve un valor 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 4 de 4.
¿Cuánto tiempo toma la lección «Expresiones frente a sentencias»?
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.
Todas las lecciones de este curso
- val frente a var
- Tipos básicos y literales
- Inferencia de tipos
- Expresiones frente a sentencias