Este documento presenta una introducción a Scala. Explica que Scala es un lenguaje de programación que combina los paradigmas de programación orientada a objetos y funcional, y que se ejecuta en la máquina virtual de Java. Además, describe algunas características clave de Scala como su tipado estático, su soporte para programación funcional a través de funciones anónimas y colecciones inmutables, y su capacidad para extender objetos mediante el uso de traits.
5. ¿Que es Scala?
Scala (Scalable Language).
Scala es un lenguaje diseñado para la JVM,
que combina los paradigmas de la
programación orientada a objetos con la
programación funcional
6. ¿Quien lo diseño?
Martin Odersky (@odersky) en la EPFL.
TypeSafe es la empresa que desarrolla y da
soporte a Scala y otras tecnologías
relacionadas
11. REPL
Read Evaluation Print Loop
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_04).
Type in expressions to have them evaluated.
Type :help for more information.
scala> println("Hello World!")
Hello World!
13. Sentencias y
Expresiones
• Sentencias son bloques de código que se
ejecutan
• Expresiones son bloques de código que se
ejecutan y que retornan un valor
59. trait (III)
class Perro extends Cuadrupedo with Mamifero {
}
class Gato extends Cuadrupedo with Mamifero {
}
class Tortuga extends Cuadrupedo with Reptil {
}
60. trait (IV)
trait UserServiceAware{
@Inject var userService:UserService = _
}
class UserController extends UserServiceAware{}
class UserEndPoint extends UserServiceAware{}
77. ¿Que es?
Programación funcional es un paradigma de
programación que trata todo operación como una
evaluación de una función aritmética y tiene sus raíces
en el calculo lambda
78. Función
val duplicar = {i: Int => i * 2}
val duplicar: (Int) => Int =
{i => i * 2}
duplicar(2)
79. Composición
val duplicar = {i: Int => i * 2}
val mas5 = {i: Int => i + 5}
val duplicarMas5 = duplicar andThen mas5
duplicarMas5(2)
val mas5duplicar = duplicar compose mas5
mas5duplicar(2)
81. Colecciones (II)
//Java
List<String> langs = Arrays.asList("Java", "Scala", "Python", "Groovy");
List<String> upperLangs = new ArrayList<String>();
for (String lang : langs) {
upperLangs.add(lang.toUpperCase());
}
82. Colecciones (III)
val langs = List("Java", "Scala", "Python", "Groovy")
val upperLangs = langs.map(lang => lang.toUpperCase)
83. Colecciones (IV)
Método Descripción
Ejecuta una función en todos los
foreach
elementos
Colección nueva aplicando una
map
función a todos los elementos
Colección nueva con todos los
filter elementos que cumplen una función
T => Boolean
Colección nueva con todos los
filterNot elementos que no cumplen una
función T => Boolean
84. Colecciones (V)
Método Descripción
Valida que todos los elementos
forall
cumplen una función T => Boolean
Valida que al menos un elemento
exists
cumpla una función T => Boolean
Retorna cuantos elementos cumplen
count
una función T => Boolean
85. Función como
parámetro
def operar(f: (Int, Int) => Int): Int = {
f(5, 8)
}
operar((a, b) => {a + b})
operar((a, b) => {a * b})