2011-06-02 17 views
10

Soy muy consciente de los constructores estáticos, pero ¿qué significa tener un static this() fuera de una clase?¿Qué significa "static this()" fuera de una clase?

import std.stdio; 

static this(){ 

    int x = 0; 

} 


int main(){ 

    writeln(x); // error 

    return 0; 
} 

¿Y cómo accedo a las variables definen en static this()?

Respuesta

13

Este es el constructor del módulo. Usted puede leer acerca de ellos aquí: http://www.digitalmars.com/d/2.0/module.html

Obviamente, no se puede acceder x en la muestra, ya que es variable local de un constructor módulo, tan bien como usted no podría haber hecho con uno de un constructor de la clase. Pero puede acceder a los alcances globales del módulo allí (e inicializarlos, que es para lo que son los constructores del módulo).

15

Es un constructor de módulos. Ese código se ejecuta una vez para cada hilo (incluido el hilo principal).

También son destructores del módulo, así como constructores y destructores módulo compartido:

static this() 
{ 
    writeln("This is run on the creation of each thread."); 
} 

static ~this() 
{ 
    writeln("This is run on the destruction of each thread."); 
} 

shared static this() 
{ 
    writeln("This is run once at the start of the program."); 
} 

shared static ~this() 
{ 
    writeln("This is run once at the end of the program."); 
} 

El propósito de estos es básicamente para inicializar y deinitialise variables globales.

Cuestiones relacionadas