2010-08-24 15 views
26

tengo¿ActionScript-3 no puede tener múltiples constructores?

public function Shard() { 
    } 

    public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number) 
    { 
     ... 
    } 

Y me dieron en el segundo constructor:

definiciones constructor múltiples encontrados. El constructor no puede definirse en el código .

Entonces, ¿ActionScript-3 no puede tener múltiples constructores?

+1

¿Por qué quieres múltiples constructores? ¿Algunos de los parámetros son opcionales? – timrwood

Respuesta

33

No, no puede tener múltiples contructor ni la misma función con diferentes firmas, pero se puede utilizar argumentos por defecto:

public function Shard(x:Number=NaN, y:Number=NaN) { 
    //... 
} 

entonces se puede llamar new Shard() o new Shard(100) o new Shard(100, 200)

o puede hacer también usa argumentos variables:

public function Shard(...args){ 
if (args.length==0) { 
    //... 
} else { 
    //... 
    var firstArg:Object=args[0]; 
    //... 
} 
} 
12

Es incluso más amplio que eso. AS3 no tiene soporte para function overloading.

Puede simular la apariencia de múltiples constructores con parámetros predeterminados y/o distribuir dinámicamente los parámetros a varios métodos init. Alternativamente, las fábricas de objetos personalizados o los métodos de creación estáticos podrían ayudar.

+2

+1. He usado métodos estáticos para inicializar y devolver nuevas instancias (tipo de fábricas similares). En general, estos métodos están definidos en la misma clase y solo están destinados a simplificar la interfaz del código de llamada. Es una solución simple y efectiva en algunos casos (aunque si quieres tener diferentes de estos "constructores" tienes que cambiar el nombre porque el compilador no lo hace por ti) –

Cuestiones relacionadas