sábado, 17 de diciembre de 2016

Un resumen de Scala for the Impatient

Como ya conté, estoy leyendo Scala for the Impatient, y se me ocurrió hacer un resumen. No pienso ser muy correcto en el resumen.

Solamente voy a escribir los temas que me gustaron más y me sorprendieron. Cosa de no evitar que lean un buen libro.

Sin más empezamos:

Empecemos por el principio, el libro recomienda como instalar scala, pero yo por una cuestión de gusto dejo que los busquen ustedes por su cuenta.

Otra buena opción es bajar scala Ide, que es un entorno de desarrollo para scala y permite ejecutar código.

Declarando variables y valores

En scala podemos nombrar valores, es decir a un valor determinado ponerle un nombre:

 scala> val answer = 8 * 5 + 2
answer: Int = 42

Con val pusimos un nombre por lo que ese nombre no puede ser usado para otro valor. Es decir se comporta como una constante.

scala> answer = 0
<console>:6: error: reassignment to val

Si necesitamos declarar una variable debemos utilizar la palabra "var"

var counter = 0
counter = 1 // OK, can change a var

Como pudieron notar no le dijimos el tipo a la variable, pero tiene un tipo dado que scala es de tipado estático, lo que sucedio es que el compilador infirio el tipo. Pero si queremos le podemos indicar el tipo:

val greeting: String = null
val greeting: Any = "Hello"

Tipos comunes

Como Java, scala cuenta con tipos tales como Byte , Char , Short , Int , Long , Float y Double, además Boolean. Sin embargo no existe el concepto de valores primitivos, es decir todo es un objeto, en serio. Veamos un ejemplo:

1.toString() //"1"

O mejor aun:

1.to(10) // Yields Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Scala no necesita wrapper types. El compilador se encarga de estos problemas, como debería ser. A la vez el compilador castea tipos de forma automática, por ejemplo el tipo Int a RichInt.

Algo que me falto aclarar es que hay clases RichInt, RichDouble, RichChar, y así sucesivamente. Cada uno de ellos tiene un pequeño conjunto de métodos de conveniencia para actuar sobre sus primos pobres: Int, Double o Char. El método "to" que has visto anteriormente es en realidad un método de la clase RichInt.

Luego continuaremos en la parte 2.

Dejo link:
http://fileadmin.cs.lth.se/scala/scala-impatient.pdf