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})