Bloques de código y asignaciones.
Un Bloque de código son un conjunto de expresiones. En scala los bloques de código, están delimitados por llaves {} y a diferencia de java o C los bloques de código retornan valor. Gracias a esto podemos inicializar un valor a partir de una expresiòn:
val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }
Como ya dijimos un bloque de código que no devuelva valor retornara Unit. La asignación no retorna valor por lo tanto si hacemos lo siguiente:
val x = y = 2
x no va a contener nada o Unit
Por lo tanto un bloque que termine en asignación sera de tipo Unit :
{ r = r * n; n -= 1 }
Input y Output.
Para imprimir algo podemos utilizar la función print o println :
print("Answer: ")
println(42)
Similar a :
println("Answer: " + 42)
También podemos utilizar print como C:
printf("Hello, %s! You are %d years old.\n", "Fred", 42)
Podemos leer una linea de tipo String con ReadLine, a la vez podemos leer teniendo en cuenta el tipo de lo que leemos con readInt, readDouble, readByte, readShort, readLong, readFloat, readBoolean, o readChar.
Loops.
Scala tiene el while similar a java o c:
while (n > 0) {
r = r * n
n -= 1
}
Scala no cuenta con el for con el formato (inicializar; condición; incrementar o actualizar) si necesitamos esta expresión tenemos 2 opciones o utilizar el while o podemos usar el for de esta forma:
for (i <- 1 to n)
r = r * i
Si recuerdan “1 to n” retorna un rango de 1 hasta n inclusive, por lo tanto i va tomar un valor del rango por iteración. Por supuesto i no puede ser val debe ser var
Si necesitamos iterar hasta n-1 podemos utilizar “until” que retorna un rango de 1 hasta n excluyendo a n.
val s = "Hello"
var sum = 0
for (i <- 0 until s.length) // Last value for i is s.length - 1
sum += s(i)
En el siguiente ejemplo no es necesario un indice podemos iterar por los caracteres directamente.
var sum = 0
for (ch <- "Hello") sum += ch