2010-08-19 13 views

Respuesta

7

Hubo un momento en que las importaciones eran public de forma predeterminada; es decir, cuando importó otro módulo, su contenido no solo sería visible desde su módulo sino también desde cualquier módulo que importara su módulo.

Finalmente, se cambió para que fueran private de forma predeterminada.

Sin embargo, hay algunas razones para especificar manualmente private:

  1. Las importaciones pueden hacerse public si están en un contexto public. Por ejemplo:

    public: 
    
    // Lots of stuff 
    
    import blah; // oh no, everyone can see my imports! 
    
  2. DMD está llena de errores relacionados con las importaciones. Por ejemplo, las importaciones selectivas son públicas por defecto a pesar de ser supuestamente privadas. Esto puede causar todo tipo de situaciones de pesadilla horribles donde los símbolos (erróneamente) importados públicamente en un módulo causan símbolos en un módulo completamente diferente para simplemente desvanecerse y romper su programa.

En otras palabras, probablemente son private en el Tango ya que los desarrolladores han trabajado con DMD durante demasiado tiempo a confiar en ella para obtener esta materia derecha.

+0

+1 ah, correcto, errores ... – stephan

+0

re pt 2 ¿estás hablando de D2 o D1? –

+0

No uso D2. Dicho esto, me sorprendería algo si D2 no tiene los mismos problemas; dmd 1.x y dmd 2.x se crean a partir del mismo código fuente, solo con diferentes definiciones previas al procesador. Las importaciones realmente no han cambiado entre 1.x y 2.x, hasta donde yo sé. –

4

En D 2.0, private import es sinónimo de import, en comparación con . Por defecto, las importaciones son privadas. Ver el Modules documentation

EDITAR: Por defecto, las importaciones son privadas D 1.0, también.

Cuestiones relacionadas