Curso de Scala: Trabajando con variables

20
Capítulo 2: Definición de datos Elaborado por Gary Briceño http://Gary.pe

Transcript of Curso de Scala: Trabajando con variables

Capítulo 2: Definición de datos

Elaborado por Gary Briceño

http://Gary.pe

Definición: Literal, Valor y Tipo

• Literal • Son los datos que aparecen directamente en el código, cómo los números, caracteres o un

texto• Ejemplo: 5, A, “Hola Mundo”

• Valor• Un valor es una unidad de almacenamiento inmutable.• Se puede asignar un valor cuando es asignado, pero no puede ser reasignado

• Tipo• Es el tipo de dato con el cual esta trabajando, una definición o clasificación de la data.• Todos los datos en Scala corresponden a un tipo específico• Todas los Tipos en Scala son definidos como clases con métodos que operan sobre ellas

Garbage Collector

• Similar al trabajo que realiza en Java

• La data almacenada en los valores es automáticamente liberada por el Garbage Collector de la máquina virtual cuando esta ya no es utilizada.

• No hay necesidad de liberar esta información en forma manual

Sintaxis

val <name>: <tipo> = <literal>;

En este ejemplo se han definido tres tipos de variables:Una de ellas nombre hola, de tipo String y con valor “Hello World!”.

Scala REPL

• Cuando se define una variable, ¿Qué sucede?• Read-Evaluate-Print-Loop

• Cuando se define una variable, se lee la definición del valor, se evalúa y se reimprime una vez confirmado el valor.

• El valor resultado de una operación, pasa a una nueva variable

Valores

• Los valores son inmutables, los tipos almacenan unidades y son el método por defecto para guardar un valor.

• Se puede definir un nuevo valor utilizando la palabra reservada val.

val <name> [: <tipo> ] = <data>;

• Los valores requiere un nombre y asignarle un dato, pero no requieren del dato explicito.

• Si no se asigna un tipo, el compilador de S

Valores:

Ejemplos sin especificar el tipo:

Inferencia de tipo

• Scala cuenta con la inferencia de tipo, la cual no obliga a definir el tipo de la variable, y Scala infiere el tipo de la misma

• Esta es una ayuda al escribir código pues elimina la necesidad de escribir el tipo de dato al escribir el código.

• Se debe utilizar cuando este no disminuye la facilidad de lectura de su código• En algunos casos será mejor incluir el tipo de dato en forma explicita, a fin de

mejorar la lectura del código

Variables

• Por lo general una variable hace referencia a un identificador que se corresponde con un espacio de memoria, en donde el valor puede ser almacenado u obtenido. De la misma forma que es reservado, se puede asignar nuevos valores una y otra vez.

• Esto funciona en la mayoría de lenguajes como Java, Python, C y Ruby• Variables son dinámicas, mutables y reasignables

• En Scala se prefieren valores a variables, debido a la estabilidad y escalabilidad que brindan al programa.• Cuando asigna un valor, este mantiene el mismo valor durante la ejecución del programa• Finalmente, cuando trabaja con programas multi hilos o concurrentes, los valores inmutables

hacen más estable el sistema

Nombres

• En Scala para las variables, se pueden utilizar letras, números y un rango de caracteres especiales• Se pueden utilizar caracteres como * y +, así como símbolos φ

• Se pueden utilizar todos los caracteres de \u0020-007F y Unicode a excepción de [] o punto (.)

Reglas de nombres

• Una letra seguida de cero o más letras y dígitos

• Una letra seguida de cero o más letras y dígitos, luego guion bajo (_), luego letras y dígitos

• Uno o más operadores de caracteres

• Los nombres no pueden empezar con números

Tipos

• Tiene tipos numéricos(Int y Double) y no numéricos (String), para definir valores y variables

• Estos tipos son la base para construir otros objetos y collections

• En Scala no hay el concepto de datos primitivos

Tipos númericos

Name Descripción Tamaño Mínimo Máximo

Byte Entero con signo 1 Byte -127 128

Short Entero con signo 2 Bytes -32768 32767

Int Entero con signo 4 Bytes - 2 a la 31 2 a la 31 – 1

Long Entero con signo 8 Bytes - 2 a la 63 2 a la 63 – 1

Float Punto flotante con signo 4 Bytes Nd Nd

Double Punto flotante con signo 8 Bytes Nd Nd

Númericos

• Scala soporta la conversión automática de los números de un rango a otro de ser necesario

• Scala no soporta convertir un número de un rango mayor a un rango menor• Se puede perder información si esto fuera posible

• Se puede convertir manualmente a un determinado tipo, utilizando el método toType: toInt, por ejemplo

String

• Representa a una cadena de texto

• Esta basado en el objeto String de Java, le agrega caracteres multilínea e interpolación de cadenas

String y operadores

• Los String soportan operadores, como por ejemplo “+” o “==“ para comparar

• El operador “==“ verifica la igualdad de los caracteres, no verifica la referencia de los objetos.

• Para una cadena multi línea se utiliza comillas triples (“”” – “”” ), para estos no se reconocen los caracteres especiales.

String y operadores

Interpolación

• Se utiliza para utilizar valores de variables dentro de una cadena

• Al inicio de la cadena, se debe agrega “s” y el símbolo de “$” se utiliza para agregar las variables

Ejemplo de interpolación

Expresiones regulares

• Es una cadena de caracteres y determinados signos que representan un patrón

• Popularizado por Perl, actualmente las expresiones regulares son parte de la mayoría de lenguajes de programación.

• En Scala, la formación de los patrones se basa en • javax.util.regex.Pattern