typestar

Fundamentos del lenguaje

27 pasos en 9 series de Scala.

Scala corre programación funcional sobre la JVM a escala industrial: Spark, Kafka y la mitad del ecosistema del big data están escritos en él, y compila al mismo bytecode que Java mientras dice el doble por línea. El dialecto de aquí es Scala 3 — la sintaxis sin llaves, guiada por indentación, con enums, métodos de extensión y definiciones de nivel superior que hicieron sentir al lenguaje una década más joven.

Este tour cubre el núcleo de todos los días: los val y la inferencia de tipos, expresiones en todas partes (if y match devuelven valores), métodos y lambdas, las colecciones inmutables y su kit de map/filter/fold, las case class con copy, los enums, Option y Either en lugar de null y excepciones, y los traits con métodos de extensión. El bis entrega programas completos. Cada fragmento compila bajo scalac -Werror con la verificación de código sin usar activada, y el bis corre de principio a fin.

Empieza este tour

Valores y tipos

  • val y varEl conteo de asientos de un ferri en vinculaciones val, con un var para el número que sí cambia.
  • Inferencia de tiposEl compilador deduce los tipos Int, Double, String y List de los valores que escribes.
  • Interpolación de cadenasTres interpoladores: s para valores, f para salida formateada, raw para escapes intactos.

Expresiones

  • if como expresiónEn Scala if/else evalúa a un valor, así que se puede asignar directo a un val.
  • Fundamentos de matchCoincidir sobre valores simples, con alternativas, guardas y un caso atrapatodo.
  • Bucles forTres formas del for: sobre una colección, sobre .indices y con dos generadores.

Funciones

Colecciones

  • ListasUn registro de mareas en una List, extendido por ambos extremos y leído con seguridad.
  • MapsUn cajón de semillas como Map, leído de dos maneras y actualizado sin mutación.
  • ConjuntosUn conjunto de aperturas de ajedrez estudiadas, consultado por pertenencia y cruzado con un repertorio rival.

Transformaciones

  • Map y filterLos pedidos de una panadería pasados por map y filter, solos y encadenados.
  • PlegarLos pesos de unas cajas plegados a un total, luego a una cadena y a un Map.
  • El for con yieldLas hileras de un huerto convertidas en colecciones nuevas con for y yield.

Case classes y enums

  • Case classesUn registro Lighthouse con impresión e igualdad generadas, desarmado por un match.
  • Copias con cambiosHorneadas revisadas con copy, que crea un valor nuevo y deja intacto el viejo.
  • EnumsUn enum de señales cubierto de forma exhaustiva, y otro cuyos casos llevan datos.

Option y Either

  • OptionLa respuesta de Scala a null: un valor que está o admite que no está.
  • Encadenar OptionsDos búsquedas dependientes y una condición, sin un solo chequeo de null.
  • Either para validarEither guarda el motivo del rechazo de un valor, donde un Option pelado no puede.

Traits y extensiones

  • TraitsUn trait fija lo que toda figura debe responder y escribe la parte común una vez.
  • Métodos de extensiónAgregar métodos a Int y String sin ser dueño de ninguno de los dos tipos.
  • Objetos y compañerosUn object es un espacio de nombres con una sola instancia; el compañero guarda los constructores.

Bis

  • word_freq.scalaUn reporte completo: normalizar un pasaje, contar sus palabras, ordenarlas e imprimirlas.
  • grade_report.scalaPromedios por estudiante, notas en letra y un resumen del curso desde una lista en el código.
  • temp_stats.scalaUna semana de temperaturas máximas como tabla de estadísticas y gráfico de barras.

Los otros tours de Scala