Download - Scala desde c# y JavaScript
Scala desde C# y JavaScriptPor @rlbisbe
http://rlbisbe.net
Rober intenta aprender Scalacon lo que sabe
Un poquito de historia
¿Qué sabía de Scala?
• Funciona sobre la JVM
• Es funcional… dicen
• Apache Spark (big data things) está escrito en él
• Bastante aceptado en la comunidad Java
Y entonces apareció
Vamos a aprender algo de Scalapara poder enterarme de algo
Sin embargo…
Pero…
al final, algo sí que se me ha quedado
¿Por qué aprender Scala?
• Menos “verboso”
• Estáticamente tipado
• Funcional
• Compatible con Android
¿Qué necesitamos?
Windows
cinst scala
OSX brew install scala
Ubuntu/Debiansudo apt-get install scala
¿Qué necesitamos?
InteliJjetbrains.com/idea/features/scala.html
Eclipsescala-ide.org
Netbeansgithub.com/dcaoyuan/nbscala
Typesafe Activator
• Generador de código basado en plantillas• Akka
• Spark
• Play
• …
• No lo veremos en esta charla
¿Por donde empezar?
docs.scala-lang.org/tutorials/scala-for-java-programmers.html
Demo: Hola mundohelloWorld.scala
helloWorld2.scala
Qué hemos visto
• Object = Singleton
• Los arrays son objetos
• App permite crear objetos ejecutables
• Sintaxis infija• args mkString “,” => args.mkString(“,”)
Variables, clases y funciones
• val: Variable inmutable
• var: Variable mutable
• def: Método
Demo: Variables, clases, y funcionesclasses.scala
Qué hemos visto
• Funciones como parámetros
• “return” opcional.
• Sintaxis distinta si hay retorno o si no hay.
• Parámetros en la definición de la clase
• Unit = void
Siguiente paso
• Katas de código• Codekata.com
• Exercises for Programmers
Mini-demo: Mi propio asserttest.scala
Probando “de verdad”
• ScalaTest• Permite probar código Java y Scala
• Integrado con JUnit, TestNG, Mockito…
• Tests unitarios e integración
• Specs• Tests de comportamento
• Basados en especificaciones
¿Por donde continuar?
scala-lang.org/docu/files/ScalaByExample.pdf
• Gratis
• Corto (140 páginas)
• Lleno de ejemplos y casos de uso
Sintaxis funcional
• Funciones anónimas
• Inmutabilidad
• Funciones anidadas
• Higher order functions
• Inferencia de tipos
Demo: Sintaxis funcionalfunctional.scala
Qué hemos visto
• Funciones sin paréntesis
• No necesitamos return
• Funciones dentro de funciones
• Inferencia de tipos
• Sintaxis infija
• Parámetro filter
Traits
• Una interfaz con implementaciones parciales
• Una clase abstracta con herencia múltiple
• Ejemplo: App
Demo: Traitstraits.scala
Qué hemos visto
• Las traits permiten tener implementación
• Podemos heredar varias traits
• Hemos de implementar las funciones necesarias y asignar valores
Case classes
• Separación entre datos y transformación
• Recomendado cuando nuestras entidades no cambien
• Menos código al agregar una nueva operación
Demo: Case classescaseClasses.scala
Qué hemos visto
• Definiciones de una línea
• Case con parámetros de constructor
• Independientes del dato
• No recomendado si nuestras entidades cambian
En resumen
• Un lenguaje muy rico y variado
• Curva de aprendizaje sencilla
• Ventajas de programación funcional
• “Magia” pero en tiempo de compilación
• Menos código que escribir
¿Y ahora qué?
• Libros:• Scala By Example
• Youtube:• Scala -- the Simple Parts
• Cursos:• Functional Programming Principles in Scala
• Principles of Reactive Programming(no hay nuevas sesiones, pero el material está ahí)
• Documentación:• scala-lang.org
Qué se nos queda fuera
• Otras miles de características del lenguaje
• Frameworks como Play (web) o Scalaz (funcional)
• Testing con ScalaTest
• Integración con herramientas
• Interoperabilidad Java
• La herramienta activator
• La Scala Build Tool: sbt
¿Preguntas?
Muchas gracias@rlbisbe
http://rlbisbe.net