Comunidad de diseño web y desarrollo en internet online

sobrecarga de funciones en AS3? no era posible ?

Citar            
MensajeEscrito el 10 Ago 2007 02:47 pm
Hola, como dice el titulo de este post, en AS3 no era posible la sobrecarga de funciones ?
:?

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 10 Ago 2007 03:16 pm

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 10 Ago 2007 03:28 pm
La sobrecarga Zah, es poder tener en una clase, dos métodos que se llaman igual, pero tienen diferentes argumentos. El override sobrescribe un método de una clase padre.

La sobrecarga no se puede en actionscript, pero se puede pseudo implementar, jugando con el número de argumentos y el datatype de los mismos.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 10 Ago 2007 04:51 pm
Si, es precisamente eso lo que quiero.
tengo varias funciones con diferentes argumentos cada una, pero no me lo coge por ejemplo
por ejemplo :

Código :

class myFill {
public function myFill():void { }
public function Fill(obj:ComboBox):void
public function Fill(obj:DataGrid):void
}


Como ves ambas implementaciones tienen tipos de datos diferentes y aun asi da error

!Definicion de funcion duplicada ! :crap:

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 10 Ago 2007 04:56 pm
Again:

Código :

La sobrecarga no se puede en actionscript, pero se puede pseudo implementar, jugando con el número de argumentos y el datatype de los mismos.


Te paso una emulación para tu código:

Código :

class myFill {
public function myFill():void { }
public function FillCombo(obj:*):void
{
  if( obj is ComboBox ){
    FillCombo(obj);
    return ;
   }
  if( obj is DataGrid)
  {
    FillDataGrid(obj);
    return ;
  }
  trace("No existe ningún método compatible para los argumentos dados");
}
public function FillCombo(obj:ComboBox):void
public function FillDataGrid(obj:DataGrid):void
}

^^

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 10 Ago 2007 06:26 pm
Gracias Dano, muy útil ejemplo, que lo pongan en tip :D!!

Por Rafeo

650 de clabLevel

3 tutoriales
1 articulo

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Ago 2007 08:09 pm
Rafeo en la noche tengo pensado hacer el tip, saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 10 Ago 2007 08:49 pm
Muy lógico..... buen tip Dano.

gracias a todos los que respondieron
^^ buen dia

Por Zandy

Claber

1345 de clabLevel

5 tutoriales

Genero:Masculino   Premio_Secretos

firefox
Citar            
MensajeEscrito el 10 Ago 2007 11:24 pm
la forma de tener cualquier cantidad de argumentos en as3 es asi:

Código :

private function myMethod(...statements):void {
   trace(statements.length +" < ---- > "+ statements);
}

saludos

Por bipsa

628 de clabLevel

1 tutorial
1 articulo

Genero:Masculino  

Colombia

firefox
Citar            
MensajeEscrito el 10 Ago 2007 11:41 pm
Con respecto al codigo de Dano cambiaria el * por DisplayObject ambos elementos heredan de esta clase.... no es bueno abusar del *, si puedes ver en la documentacion de AS3 de donde vienen todas las clases...

saludos

Por bipsa

628 de clabLevel

1 tutorial
1 articulo

Genero:Masculino  

Colombia

firefox
Citar            
MensajeEscrito el 11 Ago 2007 03:26 am
Gracias bipsa, es una idea, ya se puede ajustar a su necesidad.

Código :

...statements

Hablando de best practices, seguro y te lo digo por lógica no por leerlo en algún lado, esto es mas ambiguo que un datatype variant(* en ActionScript), ya que este permite cualquier cantidad de argumentos Y TODOS con un datatype variant, es como replicar un array con datatype *.

Ojo, me parece bueno tu consejo, que complementa idea, pero me parecio curioso que hablaras de optimizar rendimiento y ofrecer algo aun mas ambiguo que el DataType *.


saludos ^^

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 11 Ago 2007 02:35 pm
Estoy deacuerdo dano... solo mostraba la forma como tener varios parametros en una funcion con As3. El tema original de este post...
Saludos,

Por bipsa

628 de clabLevel

1 tutorial
1 articulo

Genero:Masculino  

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.