Scala Programming Language Martin Alejandro Melo - Programacion Funcional - UNQ
Guia ¿Por qué Scala?. Caracteristicas. Breve Sintaxis. Overloading. Hello World. val y var. Case Classes. Ejemplos. Ventajas Y Desventajas. Bibliografia Online. Martin Alejandro Melo - Programacion Funcional - UNQ
¿Por qué Scala? Martin Alejandro Melo - Programacion Funcional - UNQ
Caracteristicas Tipado Estatico. Funciona Sobre la JVM. Tipos Algebraicos. Pattern Matching. Funciones Anónimas. Lazy Evaluation. Currificación. Aplicación Parcial. Alto Orden. Martin Alejandro Melo - Programacion Funcional - UNQ
Breve Sintaxis Martin Alejandro Melo - Programacion Funcional - UNQ class MiClase(algo: Any){ def imprimir(texto: String):Unit = { println(texto) } def sumar(x: Integer, y: Integer): Integer={ return x+y }
Mas Sintaxis Martin Alejandro Melo - Programacion Funcional - UNQ object MiObjeto { val incrementar(x: Integer):Integer = 1+x def incrementar(x: Integer) = 1+x var quince:Integer= 15 } Funciones Anónimas: (x,y) => x+y //Recibe 2 parametros. Currificación: def sumar(x:Integer)(y:Integer) = x+y
Overloading Martin Alejandro Melo - Programacion Funcional - UNQ Permite escribir funciones con el mismo nombre pero que difieren en el tipo de parametros o la cantidad y/o el tipo de retorno. def sumar(x: Integer, y: Integer):Integer = { return x+y } def sumar(x: Float, z: Float):Float= { return x+z }
Hello World Martin Alejandro Melo - Programacion Funcional - UNQ object HelloWorld{ def main(args: Array[String]){ println(“Hello World”) }
Val Y Var Martin Alejandro Melo - Programacion Funcional - UNQ Val: Son variables de solo lectura. Se usa para la definición de Constantes, funciones y también para lograr transparencia referencial. Var: Son variables, que pueden cambiar de valor durante la ejecución.
Case Classes Martin Alejandro Melo - Programacion Funcional - UNQ Son clases que exponen sus constructores. Permiten el uso de Pattern Matching. Definicion de Case Classes: case class TipTree case class Join(ti: TipTree, td: TipTree) extends TipTree case class Tip(x: Any) extends TipTree Se instancias de la siguiente forma: Tip(“asd”) Join(Tip(33), Tip(42))
Ejemplos Martin Alejandro Melo - Programacion Funcional - UNQ
Ventajas y Desventajas Martin Alejandro Melo - Programacion Funcional - UNQ Ventajas: Overloading. Objetos. Mejor ambiente de desarrollo. Mejor manejo de memoria heap. Desventajas: Sintaxis mas compleja. No es Lazy por defecto. Curva de aprendizaje. Side Effects.
Bibliografia Online Sitio Oficial: Documentacion: Scala Reference Manuals: Scala By Example: lang.org/docu/files/ScalaByExample.pdfwww.scala- lang.org/docu/files/ScalaByExample.pdf Martin Alejandro Melo - Programacion Funcional - UNQ