← Scala EspañolChapter 01 of 13

Introduccion a Scala

## Objetivos de Aprendizaje - Comprender la historia y los objetivos de diseño de Scala - Configurar el entorno de desarrollo de Scala - Escribir y ejecutar tu primer programa en Scala - Comprender los conceptos basicos de la sintaxis de Scala ## ¿Que es Scala? Scala es un lenguaje de programacion moderno multi-paradigma que combina programacion orientada a objetos y funcional. El nombre "Scala" deriva de "lenguaje escalable". ```scala object HelloWorld extends App { println("Hello, World!") } ``` ## Plataforma Scala ### Caracteristicas Clave - **Sistema de Tipos Unificado** - Todo es un objeto, incluyendo funciones - **Inmutabilidad** - Fomenta estructuras de datos inmutables - **Inferencia de Tipos** - El compilador infiere los tipos cuando no se especifican explicitamente - **Primero lo Funcional** - Las funciones son ciudadanos de primera clase - **Interoperabilidad con JVM** - Se ejecuta en JVM e interoperate con Java ### Componentes de la Plataforma | Componente | Descripcion | |------------|-------------| | scala | REPL y ejecutor de Scala | | scalac | Compilador de Scala | | sbt | Herramienta de construccion de Scala | | Scala REPL | Shell interactivo de Scala | ## Instalar Scala ### Descarga Obtener Scala desde ### Usando SDKMAN (Recomendado) ```bash curl -s "https://get.sdkman.io" | bash sdk install scala ``` ### Verificar la Instalacion ```bash scala -version scalac -version ``` ## Tu Primer Programa ### Archivo: HelloWorld.scala ```scala object HelloWorld extends App { println("Hello, World!") } ``` ### Compilar y Ejecutar ```bash scalac HelloWorld.scala # Crea HelloWorld.class scala HelloWorld # Ejecuta el programa ``` ### Usando el Comando scala Directamente ```bash scala -e 'println("Hello, World!")' ``` ## Estructura de un Programa Scala ```scala object ClassName { // Objeto singleton (punto de entrada) def main(args: Array[String]): Unit = { // Las sentencias van aqui } } ``` ### Punto de Entrada Alternativo (Scala 2.9+) ```scala object ClassName extends App { println("Hello, World!") // args esta disponible via App trait } ``` ## Comentarios ```scala // Comentario de una linea /* * Comentario de varias lineas */ /** * Comentario de documentacion */ ``` ## El Metodo main ```scala object Main { def main(args: Array[String]): Unit = { args.foreach(println) } } ``` ## Salida del Sistema ```scala // Imprimir con nueva linea println("Hello") // Imprimir sin nueva linea print("Hello ") print("World") // Interpolacion de cadenas (Scala 2.10+) val name = "Alice" val age = 30 println(s"Name: $name, Age: $age") println(s"Age in 5 years: ${age + 5}") ``` ## Argumentos de Linea de Comandos ### Hello.scala ```scala object Hello extends App { if (args.length > 0) { println(s"Hello, ${args(0)}") } else { println("Hello, World!") } } ``` ```bash scalac Hello.scala scala Hello Alice # Salida: Hello, Alice ``` ## Usando el REPL de Scala El REPL de Scala (Read-Eval-Print Loop) es un shell interactivo: ```bash scala ``` ```scala scala> val x = 10 x: Int = 10 scala> val y = 20 y: Int = 20 scala> x + y res0: Int = 30 scala> def greet(name: String) = s"Hello, $name" greet: (name: String)String scala> greet("World") res1: String = Hello, World ``` ## IDEs ### IDEs Populares - IntelliJ IDEA con plugin de Scala (recomendado) - VS Code con Metals (servidor de lenguaje Scala) - Ammonite REPL para scripting - Metals con VS Code o Neovim ## Versiones de Scala ```bash scala -version ``` | Version | Año | Caracteristica | |---------|-----|----------------| | Scala 2.10 | 2013 | Interpolacion de cadenas, Reflexion | | Scala 2.11 | 2014 | Modularizacion | | Scala 2.12 | 2016 | Compatibilidad con Java 8 | | Scala 2.13 | 2019 | Rediseño de colecciones | | Scala 3.0 | 2021 | Nueva sintaxis, tipos dependientes, metaprogramacion | ## Scala vs Java | Aspecto | Java | Scala | |---------|------|-------| | Inferencia de tipos | Limitada (var en Java 10+) | Extensa | | Funciones | Objetos (Java 8+) | Funciones de primera clase | | Metodos de extension | Via utilidades | Clases implicitas | | Traits | Interfaces con metodos por defecto | Traits ricos con estado | | Emparejamiento de patrones | switch (basico) | Emparejamiento de patrones potente | | Manejo de nulos | Excepciones de puntero nulo | Tipo Option | ## Resumen - Scala combina programacion orientada a objetos y funcional - Se ejecuta en la JVM con interoperabilidad completa con Java - La inferencia de tipos reduce la verbosidad - Todo es un objeto, incluyendo funciones - El REPL permite desarrollo interactivo - Usa `scalac` para compilar y `scala` para ejecutar - Comentarios: `//`, `/* */`, `/** */`

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →