martes, 20 de junio de 2017

Un resumen de Scala for the Impatient, parte 21


Los imports pueden estar en cualquier lado.

En scala los import pueden estar en cualquier lugar. No solo en el principio del archivo. Por ejemplo:

class Manager {
import scala.collection.mutable._
val subordinates = new ArrayBuffer[Employee]
}

Esto es muy útil, dado que reduce las posibilidades de conflicto.

Renombrar y ocultar miembros.

En scala se pueden importar algunos miembros de un paquete usando el selector:

import java.awt.{Color, Font}

La sintaxis del selector permite renombrar las clases :

import java.util.{HashMap => JavaHashMap}
import scala.collection.mutable._

Ahora JavaHashMap es java.util.HashMap y HashMap es scala.collection.mutable.HashMap

El selector => _ es útil para ocultar una implementación. Esto es útil en el caso particular de que se quiera dejar de usar una clase para utilizar otro por ejemplo dentro de una clase:

import java.util.{HashMap => _, _}
import scala.collection.mutable._

Ahora HashMap es scala.collection.mutable.HashMap dado que java.util.HashMap se oculto.

Imports implícito.

Cada programa de scala se importan de forma implícita los siguientes paquetes:

import java.lang._
import scala._
import Predef._

Como es un programa Java se importa todas las clases de java.lang y luego se importan las clases de scala que en cierto caso pisan alas de java. Por ejemplo scala.StringBuilder pisa a java.lang.StringBuilder.

Y por ultimo se importa el objeto Predef. Que es un objeto que contiene funciones útiles.

Como el paquete scala es importado por defecto no es necesario importarlo luego, por ejemplo:
collection.mutable.HashMap es scala.collection.mutable.HashMap pero no es necesario escribir el comienzo del paquete.