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.