2011-04-21 10 views
17

Al principio de mis archivos Scala en un proyecto en particular, que a menudo tienen líneas como éstas:¿Puedo importar desde múltiples paquetes todos a la vez en Scala?

package com.mycompany 
package subproject 

import common._ 
import uiutils._ 
import databinding._ 
import modeling._ 

¿Hay una manera de crear un objeto ProjectImports (u objeto paquete) que “preimports” todas estas importaciones de modo que simplemente pueda escribir

import ProjectImports._ 

en lugar de toda la lista, en cada uno de mis otros archivos de proyecto?

¿Está relacionado con la forma en que el paquete scala se importa en Predef con scala.`package`?

+1

Me gustaría agregar que la inclusión de listas de importaciones de paquetes individuales puede servir para documentar las dependencias de los archivos fuente mientras que 'import ProjectImports._' oculta las dependencias individuales. –

+0

'import _universe_' ^^ –

Respuesta

8

Puede hacerlo fácilmente si todas las importaciones que necesita son miembros de algunos rasgos. Si tiene varios rasgos con funciones, clases internas, etc., puede crear objetos heredados de todos ellos. Entonces, todas sus cosas se pueden importar con el simple import MyObject._. Importar clase de esta manera se volvió un poco complicado: tienes que crear un miembro de tipo para cada clase.

Para ver más ejemplos de esta técnica, consulte Casbah Imports object y Scalaz object en el proyecto scalaz.

+0

Gracias, parece un buen truco para usar al desarrollar su propia lib. Incluso podría mezclar todos los rasgos en el objeto del paquete (entonces solo necesitaríamos 'importar scalaz._' y no más el segundo' import Scalaz._'. ¿Pero qué pasa con otras libs que no siguen este patrón? –

+1

I Estoy marcando su respuesta como aceptada hasta que descubramos más sobre este tema, por ahora parece que lo que quería hacer en mi pregunta no se puede hacer tal como está. –

Cuestiones relacionadas