11 oct 2020

Scala... "pasos chiquitos"

Siempre mi "fuerte" han sido las tecnologías Microsoft. Pero hace rato que quería intentar algo diferente. Hace poco me topé con el nombre de Scala, me interesé y pensé ¿Por qué no echarle un ojo para ver de que se trata..?

Scala es un lenguaje de programación basado en Java. Es multi paradigma lo que quiere decir que soporta tanto programación orientada a objetos, estructurada y programación funcional.

Siendo un lenguaje de alto nivel con las características propias de uno,  tiene algunas particulares muy interesantes como por ejemplo tipado estático fuerte, inferencia de tipos, variables mutables e inmutables.

¿Cómo instalar Scala? 

Para instalar Scala en Windows necesitamos descargar el Instalador de Scala para Windows de la siguiente dirección Getting Started | Scala Documentation (scala-lang.org). Abrimos el archivo y corremos el ejecutable, éste instalará Scala junto con otras utilidades como el REPL mejorado Ammonite o inclusive la máquina virtual de Java si es que aun no la tenemos instalada.

Una vez ejecutado este instalador pues si nos vamos a una terminal de sistema (PowerShell) y digitamos scalac (el compilador de Scala) deberíamos recibir una respuesta como esta:

 


Indicándonos que ya podemos empezar a jugar con Scala

Empezando a jugar con Scala.

La forma más fácil de empezar con Scala, antes de empezar con archivos, scritps y compilación, es familiarizarse con su sintaxis a través del REPL (Read Eval Print Loop) que es un interprete de Scala que nos permite escribir sintaxis de Scala y obtener el resultado de su ejecución. En este caso vamos usar Ammonite digitando “amm” en una ventana de comandos

 


Aquí podemos escribir código en cada línea y a dar enter nos dará el resultado de la evaluación de la misma. Por ejemplo

 


Aquí hemos sumados un par de números en la primera línea y concatenado 3 strings en la siguiente, y concatenado el resultado de la primera línea con el resultado de la segunda. Como podemos notar Scala infiere el tipo de cada resultado.

Podemos hacer cosas un poco más complejas y usar por ejemplo tipos de Scala como las colecciones iterables tipo seq:

 


Hagamos un pequeño ejercicio

Definamos una variable inmutable de tipo secuencia de enteros, una función que reciba como parámetro la secuencia de enteros y devuelva la suma de los mismos. Veamos:

 


Analicemos lo anterior:

Definimos la variable inmutable llamada “numeros” usando la para reservada val. Como vemos no hace falta definir su tipo ya que se infiere de la asignación que realizamos inmediatamente después de su declaración, en este caso, una secuencia de enteros. Sin embargo es importante señalar que el tipo se puede establecer utilizando dos puntos y el tipo (val numeros: Seq[Int] por ejemplo). 

Seguidamente definimos la función “suma” utilizando la palabra reservada def. Esta función recibe un parámetro llamado lista, aquí sí es obligatorio definir el tipo de los parámetros, para que el compilador sepa cual es el tipo esperado por la función, y definimos el tipo que devolverá función (Int), esto último no es obligatorio ya que el compilador puede inferirlo del valor que devuelve la función pero es una buena practica establecerlo sobre todo en funciones públicas. Luego de la función colocamos un “=” y la expresión que ejecutará la función (podemos usar {} para definir un conjunto de instrucciones). En este caso usamos la función fold del tipo secuencia para realizar la suma de todos los números (la función fold recibe un valor inicial, cero este caso, luego itera sobre los elementos de la secuencia utilizando la función entre paréntesis,_ +_ aquí, donde los parámetros son el ultimo resultado de la misma función o el valor inicial y el valor actual del item de la secuencia en cada iteración). 

Finalmente llamamos a la función “suma” usando la variable “numeros" como parámetro y obtenemos el resultado. 

Como podemos notar el utilizar el REPL es muy practico para comenzar a practicar con las instrucciones de Scala.

Un último apunte en esta entrada del blog: para salir de Ammonite usamos el comando exit. 


Roy {aka. Foy}

Autor & Editor

Desarrallador y líder técnico, con experiencia en tecnologías Microsoft desde los tiempos del VB6 y el asp clásico hasta el .Net Core, pasando por COM+, javascript, angularjs, Ionic, xaml, cordova, MVC, Web Api, Sql Server, Oracle... . Ávido lector, apasionado programador.