2012-06-15 14 views
7

que he visto en algunas bibliotecas, aerosol, por ejemplo, especificaciones de paquetes duales como este:sentencias de paquete dual en Scala

package cc.spray 
package http 

// code 

Se trata sólo de los ojos dulces para cc.spray.http paquete, o hay una beneficio funcional para romper los dos separados de esta manera?

Respuesta

8

Eso equivale a esto:

package cc.spray.http 
import cc.spray._ 
// implicitly, import cc.spray.http._ 

Es decir, todos los miembros del paquete cc.spray y del paquete de cc.spray.http son visibles. Por otro lado, los miembros del paquete cc son no visibles.

De esta manera, uno puede usar nombres como java en su jerarquía de paquetes sin causar problemas y, al mismo tiempo, hacer visibles fácilmente los ámbitos del paquete que uno quiere que sean visibles.

+0

Justo cuando uno piensa que empiece a conocer un idioma, algo que conocen y muestra fresco hasta ... –

3

Las instrucciones de paquete separadas ponen cc.spray y cc.spray.http en el alcance.

0

Como muchas otras cosas, esto se introdujo con Scala 2.8: las otras respuestas le dan el "qué" (exponiendo varios ámbitos del paquete al contexto actual) y el documento oficial de Scala tiene a lot more detail, junto con una explicación detallada para la característica.

1

no olvidemos una buena victoria obtenida de este enfoque

// Foo.scala 
package cc.spray 
package http 

class Foo { 
    ... 
} 

// Bar.Scala 
package cc.spray 
package bar 

import http._ // concise imports relative to cc.spray 

class Bar { 
    ... 
}