miércoles, 21 de diciembre de 2016

Un resumen de Scala for the Impatient, parte 3

Estructura de Control y funciones

Expresión condicional

Scala tiene la expresión condicional if/else similar a java o c, sin embargo esta expresión retorna un valor. Por ejemplo:

if (x > 0) 1 else -1

Esta expresión retorna 1 o -1 con lo que podemos hacer

val s = if (x > 0) 1 else -1

y esto es similar a

if (x > 0) s = 1 else s = -1

En el segundo ejemplo s es un var, dado que cambia su valor.

El operador ternario de java y c funciona de forma similar que el if de scala.

Toda expresión en scala tiene un tipo, por lo que la expresión del ejemplo anterior es de tipo Int. Si tenemos una expresión que retorna diferentes tipos, scala lo tipara por el padre común.

if (x > 0) “positivo” else -1

En este caso scala va a tipar esta expresión a Any dado que es el ancestro común entre Int y String. (luego hablaremos de los tipos)

Si tenemos la expresión:

if (x > 0) 1

En el caso del “else” no retornamos nada, en scala todo retorna un valor y la nada es un valor que tiene un tipo similar a void de c o java. Este tipo es la clase Unit que tiene un valor y el mismo se escribe con dos paréntesis (), por lo tanto podemos afirmar que el siguiente ejemplo es igual al anterior:

if (x > 0) 1 else ()

Técnicamente hablando no es igual a void, void significa “sin valor” y Unit es un valor que significa “sin valor”, parece lo mismo pero no lo es, Unit es similar a tener cero pesos en la billetera y void a no tener billetera.

Terminación de sentencias

Como pudieron ver en scala no es necesario el punto y coma es opcional, similar a javascript. Sin embargo si deseamos escribir 2 expresiones en una linea, estamos obligados a usar el punto y coma.

if (x > 0) { a = 1; j= 6 }

El punto y coma es necesario para separar las 2 lineas pero no al finalizar, dado que se encuentra la llave que cierra }

Si deseamos escribir una expresión en 2 lineas esta debe terminar en un simbolo, como por ejemplo:

s = s0 + (v0 * 0,1) +
    t * 5 + s0

En la practica no es común tener expresiones tan largas o estas deberían ser una función.

Muchos programadores procedentes de Java o C ++ son inicialmente incómodos acerca de omitir puntos y comas. Si usted prefiere tenerlos, simplemente póngalos en - no hacen ningún daño.