Scala for Backend Engineering & Functional Programming · Lección

Expresiones frente a sentencias

Todo devuelve un valor

Lección 4 de 413 pasos

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 2

if 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 style

Comprobació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 y for/yield devuelven 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 var y los errores.
Gratis para empezar

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

  1. val frente a var
  2. Tipos básicos y literales
  3. Inferencia de tipos
  4. Expresiones frente a sentencias
← Volver a Scala for Backend Engineering & Functional Programming