Scala

Scala es un lenguaje funcional y orientado a objetos compatible con la máquina virtual de Java. Wiki En esta publicación, no pretendo hacer un curso intensivo de Scala, si no una serie de ejemplos comparados que no muestren las posibilidades de este lenguaje y de la programación funcional. Si después de leer el articulo os pica la curiosidad aquí tenéis un libro de referencia: Scala.

Pues empecemos. Para probar los siguientes ejemplos puedes emplear el siguiente editor online para Scala https://paiza.io/es/projects/new

Todo en Scala es un objeto, eso significa que los elementos del lenguaje todos tienen propiedades implícitas. Como vemos en el primer ejemplo podemos realizar operaciones matemáticas básicas empleando los operadores de toda la vida o podemos usar los operadores funcionales.

En programación clásica para sumar 2 números emplearíamos el operador suma +.

En programación funcional aprovechamos los operadores implícitos de Scala, que van precedidos del punto.

A continuación, el código completo.

Si bien, en código tan básico no supone una ventaja radical como veremos más adelante supone una simplificación inmensa del código. Otras de las características de Scala es la asignación perezosa de tipos, es decir es el compilador el que le asigna el tipo a la variable en base a su contenido. Este tipo de variables dinámicas son : Int , Long , Float, Double, Char, String, Boolean, Null, Unit, Nothing, Any, AnyRef.

Estructuras Básicas de datos y operaciones

La estructura básica para contener datos es el array. Este puede contener un solo tipo de datos, puede tener duplicados y son modificables. En el siguiente ejemplo inicializamos un array de numeros enteros y lo mostramos por consola mediante una función anonima “foreach”.

Recorridos natural, funcional y comprehesion con operaciones

Dentro de las herramientas para recorrer conjuntos de datos dentro de escala podemos optar por

Filtros sobre datos

Listas

Conjuntos sets

Tuplas

Maps

Combinación de funciones

Map, Foreach, filter, zip, groupby, partition, find, drop & dropWhile, foldLeft, foldRigth, flatten, flatMap, sliding

Zip

Partition

Groupby

Find

Drop y dropWhile

FoldLeft y foldRigth

Flatten

FlatMap

Funciones

Clases

Bibliografía

https://paiza.io/projects
http://www.scala-lang.org/docu/files/ScalaTutorial-es_ES.pdf
https://www.tutorialspoint.com/scala/scala_data_types.htm
https://docs.scala-lang.org/es/tutorials/scala-for-java-programmers.html
http://docs.scala-lang.org/cheatsheets/index.html
https://twitter.github.io/scala_school/collections.html
http://www.codecommit.com/blog/scala/quick-explanation-of-scalas-syntax
https://alvinalexander.com/scala/scala-tuple-examples-syntax
https://alvinalexander.com/scala/create-iterating-scala-string-maps
https://alvinalexander.com/scala/iterating-scala-lists-foreach-for-comprehension
http://allaboutscala.com/tutorials/chapter-2-learning-basics-scala-programming/scalatutorial-learn-use-for-comprehension/
https://www.tutorialspoint.com/scala/scala_tuples.htm
https://www.artima.com/forums/flat.jsp?forum=283&thread=243570
https://alvinalexander.com/scala/how-to-split-sequences-subsets-groupby-partitionscala-cookbook
https://alvinalexander.com/scala/scala-for-loops-foreach-how-to-translated-by-compiler
https://alvinalexander.com/scala/examples-scala-sequences-collection-methods-seq-listarray-buffer
https://alvinalexander.com/scala/how-create-scala-list-range-fill-tabulate-constructors