Cristalab

sobrecarga de funciones en AS3? no era posible ?

   Foros de discusión -> Flex, Actionscript 3 y AIR (Apollo)
Mensaje Autor
Mensaje Publicado: Vie Ago 10, 2007 2:47 pm     Citar   firefox 
Hola, como dice el titulo de este post, en AS3 no era posible la sobrecarga de funciones ?
Confundido

Zandy

Héroes
clabLevel: 906 Genero:Masculino
www.cristalab.com

3 Tips

MP         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 3:16 pm     Citar   firefox 
err te refieres a override?
 _________________
Si miro tan alto es porque ando a hombros de gigantes- Isaac Newton

Zah
SWAT Team

SWAT Héroes
clabLevel: 2908 Genero:Masculino
Zaragoza, España
4 Tutoriales
20 Tips

MP Email     Google Talk  MSN Messenger  
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 3:28 pm     Citar   firefox 
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.
 _________________
Hemisferio derecho

Blog de la selección mexicana.

Dano
BOFH

Bastard Operators From Hell
clabLevel: 2859 Genero:Masculino

3 Tutoriales
7 Tips
10 Ejemplos

MP Web         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 4:51 pm     Citar   firefox 
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 ! Aw Crap

Zandy

Héroes
clabLevel: 906 Genero:Masculino
www.cristalab.com

3 Tips

MP         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 4:56 pm     Citar   firefox 
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
}

miau
 _________________
Hemisferio derecho

Blog de la selección mexicana.

Dano
BOFH

Bastard Operators From Hell
clabLevel: 2859 Genero:Masculino

3 Tutoriales
7 Tips
10 Ejemplos

MP Web         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 6:26 pm     Citar   firefox 
Gracias Dano, muy útil ejemplo, que lo pongan en tip Muy Feliz!!
 _________________
"Puede más el que quiere que el que puede"
http://diario.de/rafeo

Rafeo


clabLevel: 420 Genero:Masculino
Cananea Creative Child in Hermosillo

2 Tips

MP Web         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 8:09 pm     Citar   firefox 
Rafeo en la noche tengo pensado hacer el tip, saludos
 _________________
Hemisferio derecho

Blog de la selección mexicana.

Dano
BOFH

Bastard Operators From Hell
clabLevel: 2859 Genero:Masculino

3 Tutoriales
7 Tips
10 Ejemplos

MP Web         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 8:49 pm     Citar   firefox 
Muy lógico..... buen tip Dano.

gracias a todos los que respondieron
miau buen dia

Zandy

Héroes
clabLevel: 906 Genero:Masculino
www.cristalab.com

3 Tips

MP         
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 11:24 pm     Citar   firefox 
la forma de tener cualquier cantidad de argumentos en as3 es asi:

Código :


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

saludos

bipsa


clabLevel: 426 Genero:Masculino
Colombia


MP Email Web       MSN Messenger  
Volver arriba
Mensaje Publicado: Vie Ago 10, 2007 11:41 pm     Citar   firefox 
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

bipsa


clabLevel: 426 Genero:Masculino
Colombia


MP Email Web       MSN Messenger  
Volver arriba
Mensaje Publicado: Sab Ago 11, 2007 3:26 am     Citar   firefox 
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 miau
 _________________
Hemisferio derecho

Blog de la selección mexicana.

Dano
BOFH

Bastard Operators From Hell
clabLevel: 2859 Genero:Masculino

3 Tutoriales
7 Tips
10 Ejemplos

MP Web         
Volver arriba
Mensaje Publicado: Sab Ago 11, 2007 2:35 pm     Citar   firefox 
Estoy deacuerdo dano... solo mostraba la forma como tener varios parametros en una funcion con As3. El tema original de este post...
Saludos,

bipsa


clabLevel: 426 Genero:Masculino
Colombia


MP Email Web       MSN Messenger  
Volver arriba
Responder al tema    Foros de discusión -> Flex, Actionscript 3 y AIR (Apollo) Todas las horas son GMT
Página 1 de 1

Respuesta Rapida

  Citar el ultimo mensaje
Adjuntar tu firma

Mostrar mensajes de anteriores:
  

 


Cristalab BloodBerry Style © 2006 Cristalab
Powered by phpBB © 2001, 2002 phpBB Group