Scala
Scala
Lenguajes de Programación
Universidad Nacional de Colombia
2017-II
Preferencia de inmutabilidad
“java sin punto y coma”
Case-sensitive
Operadores relacionales
== != > < >= <=
Operadores Lógicos
&& || !
Operadores de bit
& | ^ ~ << >> >>>
Rangos:
2 to 6 -> inclusivo
2 until 6 -> exclusivo
2 until 6 by 2 -> con salto
if (condición) { . . . }
else if {. . . }
else {. . . }
variable match {
case 1 => . . .
case _ => . . .
}
Loops:
for ( a <- 1 to 10) { . . .}
for ( a <- 1 until 10 { . . .}
for ( a <- 1 to 3; b <- to 3) { . . .}
for ( a <- list) { . . .}
for ( a <- list
if a != 3; if a < 8) {. . .}
while( . . .) { . . .}
do { . . .} while ( . . .)
Objetos:
Instancia de una clase
Clase:
Abstracción del objeto.
Métodos:
Define comportamientos.
Campos:
Conjunto único de variables de instancia de un objeto.
Salida:
println()
-formatos:
%f -> float
%d -> int
%s -> string
-interpolador ‘s’.
-interpolador ‘f’.
-interpolador ‘raw’.
Colecciones
- Lists
- Sets
- Maps
- Tuples
- Options
- Iterators
Listas
scala.collection.mutable.Set
romanNumerals(“V”) Retorna 5
capitalCountry get Colombia Retorna Some(Bogotá)
Mapas
while (myVal.hasNext){
println(myVal.next())
}
trait MyTrait{
...
}
- call-by-name-
- valores de parámetros por defecto
- parcialmente aplicadas
- con argumentos nombrados
- de orden superior
- recursivas - anidadas
- anónimas - curring
Closure: función donde el valor retornado depende de variables
definidas fuera de la función.
funcion(otraFuncion())
Con Argumentos Variables
println(inc(2))
Nos permite redefinir funciones para ser usadas con cualquier tipo de
dato:
msort(nums)((x, y) = x < y)
msort(fruts)((x, y) => x.compareTo(y) <0)
Parámetros implícitos
import math.Ordering
https://www.coursera.org/learn/progfun1/home/week/1
https://www.tutorialspoint.com/scala/index.htm