Otra cosa importante es que scala es compatible con java es decir que corre sobre jvm y puede utilizar jars.
Veamos un ejemplo de Quicksort:
def sort(xs: Array[Int]): Array[Int] = {
if (xs.length <= 1) xs
else {
val pivot = xs(xs.length / 2)
Array.concat(
sort(xs filter (pivot >)),
xs filter (pivot ==),
sort(xs filter (pivot <)))
}
}
Como podemos ver en el ejemplo es diferente a lo que estamos acostumbrados, dado que se mezcla con la programación funcional.
- El algorismo lo primero que hace es ver si el vector tiene 1 o 0 elementos si es así ya se encuentra ordenado, así que lo devuelve.
- Si tiene más elementos toma el elemento del medio como pivot y luego corta el vector en 3 los menores al pivot, los iguales y los mayores.
- Luego ordena los subconjuntos menor y mayor y así recursivamente.
- El resultado es la suma de los subvectores.
Vieron lo raro que filtra los menores y mayores podria usar el “.” es decir xs.filter(pivot ==). Esto es smalltalk-like como cualquier elemento es un objeto y todo usa objetos el indicador de llamadas a metodos puede ser el espacio o punto. De esta forma podemos hacer 1 + 1 o 1.+(1)
Otra característica es que al igual que ruby la ultima expreción ejecutada es el return de la función.
Esta muy bueno no? Alguien lo utiliza?
Dejo links:
http://www.scala-lang.org/