Comunidad de diseño web y desarrollo en internet online

obtener nº de parametros de una funcion, desde otra

Citar            
MensajeEscrito el 29 Sep 2006 08:47 pm
arguments al final es un array.. eso está claro ^^ , y si hago esto:

Código :

function multiplicar(a:Number, b:Number, c:Number):Void{
   cuantos = arguments.length;
   trace(cuantos);
}
multiplicar(2,3,4);//salida : 3

pues me dará el número de parámetros de la función. Pero ¿ como sé cuantos parámetros tiene, desde otra función? es decir una función aparte de esa : obtenerParametrosDeFuncionMultiplicar()
:? se puede? THX

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 29 Sep 2006 09:03 pm
Pues no se me ocurre cómo podría hacerse. ¿Para qué lo necesitas?

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 29 Sep 2006 09:34 pm
Igual no funciona :( .. ya intenté .. y está mal el postulado.. si pongo multiplicar(); me devuelve cero... lo q quiero saber es con cuantos fue declarado, pero eso (obviamente es algo q ya lo sé, si lo estoy escribiendo..) Una reverenda confusión.. nada más.. ( hacer clases me esta pateando el cerebro XD )
Bueno, esta es la idea.. estoy haciendo una clase "boton" de esta forma...

Código :

btn.setear( nombreFuncion, y, sus, N, ..., argumentos, presionado, deshabilitado)

el primer parametro debe ser la funcion:function q realize al presionar el boton
el segundo y demás, los parametros de esta funcion q pueden se 0,1,2 o N
y los dos ultimos booleanos q me digan "presionado"=si usar press o release y "deshabilitado"=si debe quedar deshabilitado el boton o no.^^
El problema, es q si los 2 ultimos son false, quiero hacer algo para q no se tengan q escribir, por ejemplo escribiendolos y no:

Código :

btn.setear(multiplicar,30,40,true,true);
btn.setear(multiplicar,30,40,50,7338,false,true);
btn.setear(multiplicar,54,545,54);//si ambos son false, 
//pos para q escribirlos, seria mas PRO :D, 
//pero si no se puede, pos ni modo, ya no existe el problema

En un post anterior (gracias) pude hacer lo de los argumentos dinamicos, pero ahora.. ¿como sabría si estan escritos o no los 2 ultimos? ambos son boolean, pero puede darse q en la funcion q va adentro, tambien tengan argumentos boolean, como para no resolver el problema por ahí, me imagine contar los atributos con arguments.lenght (en este post) pero no es tampoco la respuesta por ahi.. no se si me entiendan XD

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 29 Sep 2006 11:09 pm
Revisa si son undefined ;)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 30 Sep 2006 12:43 am
claro, es lo q quiero hacer, sin son false o undefined los paso como false y hago las respectivas acciones, la cuestion es q todo el conjunto de argumentos son un array ... como identifico si los 2 ultimos registros de ese array no son los parametros de la funcion q tambien envio ?
tratare de graficar.. un array de N elementos:(los tipos de datos son ejemplos, excepto el primero y los 2 últimos), ya q el numero de parametros q le paso a esta funcion son variables

Código :

[0]nombre_de_la_funcion:function
[1]argumento1:String
[2]argumento2:Number
[3]argumento3:Number
[...]argumento...:String
[N-2]argumentoN-2:Boolean
[N-1]argumentoN-1:Boolean
[N]argumentoN:Boolean


¿como atrapo los 2 últimos y saber si son parte de los argumentos de la funcion o los 2 boolean finales q necesito ? ya q puede darse el caso (cuando ambos son false) de no escribirlos ?

:crap:

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 30 Sep 2006 01:01 am
Ergh puedes verificar uno por uno, segun entiendo los dos, N-1 y N-2 sino son true, entonces por defecto son false, no veo mayor problema con eso.

Pero mira esto, a ver si te sirve:

Código :

function miFuncion(param:Object )
{
   trace(param._enabled);
   trace(param._disabled);
   trace(param.otherParam);
   trace("--------------------------");
}

miFuncion({_enabled:false,_disabled:"test"})

miFuncion({otherParam:3, _enabled:false,_disabled:"test, deberia ser true, pero para que veas"})


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Oct 2006 07:21 am
Acidbjazz es por la lógica que planteas, lo ideal sería así:

Código :

btn.setear( nombreFuncion, y, sus, N, ..., [argumentos], presionado, deshabilitado)


observa que argumentos es un array, así es como se tratan los argumentos de una función, después para aplicarlos simplemente algo similar a esto:

Código :

nombreFuncion.apply(this, argumentos);


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

clabbrowser
Citar            
MensajeEscrito el 02 Oct 2006 04:15 pm
Gracias Dano, pero lo q no sé es que método usar para restar o no los valores de los parametros q no pertenecen a la función que envío, lo q tengo es esto ...

Código :

public function ini(funcion, parametros):Void{
nuevosParametros = arguments.splice(1, (arguments.length - 4));
//del array que queda ....funcion vendria a ser arguments[0]
alPresionar = arguments[1];
deshabilitar = arguments[2];
if (typeof(arguments[3]) == "string"){
   etiqueta = arguments[3];
   this.txt.txt.text = etiqueta;   
}
funcion.apply(null, nuevosParametros);

y lo uso así :

Código :

obj.ini(funcion, [arguments], alPresionar, deshabilitar, etiqueta)


ya todo funciona bien ... (y) .. solo es una forma de querer mejorarlo, si por ejemplo, al terminar en el caso de "false, false, undefined" ... mejor no poner nada ...y dejarlo sólo en funcion, [arguments] , pero no sé como tomar los valores, ya q como verán las 2da línea .. siempre le resto 4. :crap:

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 02 Oct 2006 04:56 pm

Código :

function dumy(arg1,arg2){
   trace("Estas en la función dumy");
   trace("El argumento 1 es: " + arg1);
   trace("El argumento 2 es: " + arg2);
}
function ini():Void {
   funcion = arguments[0];
   nuevosParametros = arguments[1];
   alPresionar = arguments[2];
   deshabilitar = arguments[3];
   etiqueta = arguments[4];
   if (typeof (etiqueta) == "string") {
      this.txt.txt.text = etiqueta;
   }
   this[funcion].apply(null, nuevosParametros);
}
ini("dumy", ["uju 1","uju 2"], alPresionar, deshabilitar, etiqueta);
ini("dumy", ["uju 1","uju 2"]);

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 02 Oct 2006 05:29 pm
aaaaaaaahhhh claro lo hice así al principio, pasandole un array ... (ver) , pero la idea es que para q sea mas pro, pasarle parametros a diestra y siniestra, claro, si es q se puede... sólo con comas... :P ..

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 02 Oct 2006 08:43 pm
Acidbjazz, como tu estabas usando el array, creo que era diferente, yo mas que usarlo como array lo uso como parametro, de los parametros de la función(do you get it?)

Código :

function dumy(arg1,arg2){
   trace("Estas en la función dumy");
   trace("El argumento 1 es: " + arg1);
   trace("El argumento 2 es: " + arg2);
}
function dumy2(arg1,arg2,arg3,arg4){
   trace("Estas en la función dumy2");
   trace("El argumento 1 es: " + arg1);
   trace("El argumento 2 es: " + arg2);
   trace("El argumento 3 es: " + arg3);
   trace("El argumento 4 es: " + arg4);
}
function ini():Void {
   funcion = arguments[0];
   nuevosParametros = arguments[1];
   alPresionar = arguments[2];
   deshabilitar = arguments[3];
   etiqueta = arguments[4];
   if (typeof (etiqueta) == "string") {
      this.txt.txt.text = etiqueta;
   }
   this[funcion].apply(null, nuevosParametros);
}

ini("dumy", ["uju 1","uju 2"], alPresionar, deshabilitar, etiqueta);
ini("dumy", ["uju 1","uju 2"]);
ini("dumy", ["uju 1","uju 2"], alPresionar, deshabilitar);
ini("dumy2", ["uju 1","uju 2","uju 3", "uju 4"], alPresionar, deshabilitar);
ini("dumy2", ["uju 1","uju 2","uju 3", "uju 4"], alPresionar);
/* esto: ["uju 1", "uju 2"] no lo veas como un array, velo como lo que es los parametros para tu función dumy o la que quieras, si quieres mas parametros, pues agrega la coma y ya. Repito la función NO recibe un array, recibe los parametros */


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 03 Oct 2006 03:41 pm
Gracias Dano por todo el esfuerzote (y) , chevere, pero.. si te entiendo y estamos haciendo lo mismo... creo q mejor subo los archivos .... ya hice esto antes ..

Código :

ini("dumy", ["uju 1","uju 2"], alPresionar, deshabilitar, etiqueta);
ini("dumy", ["uju 1","uju 2"]);
ini("dumy", ["uju 1","uju 2"], alPresionar, deshabilitar);
ini("dumy2", ["uju 1","uju 2","uju 3", "uju 4"], alPresionar, deshabilitar);
ini("dumy2", ["uju 1","uju 2","uju 3", "uju 4"], alPresionar);


lo q quiero es q eso se pueda escribir así...

Código :

ini("dumy", "uju 1","uju 2", alPresionar, deshabilitar, etiqueta);
ini("dumy", "uju 1","uju 2");
ini("dumy", "uju 1","uju 2", alPresionar, deshabilitar);
ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", alPresionar, deshabilitar);
ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", alPresionar);


:crap: si es q se puede ......

PD.: los files ^^

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 08 Oct 2006 04:55 am
Taran taran:

Código :

function dumy(arg1,arg2){
   trace("Estas en la función dumy");
   trace("El argumento 1 es: " + arg1);
   trace("El argumento 2 es: " + arg2);
}

function dumy2(arg1,arg2,arg3,arg4){
   trace("Estas en la función dumy2");
   trace("El argumento 1 es: " + arg1);
   trace("El argumento 2 es: " + arg2);
   trace("El argumento 3 es: " + arg3);
   trace("El argumento 4 es: " + arg4);
}

function ini():Void {
   var funcion:String = arguments[0];
   var   noParam:Number = arguments.length;
   var nuevosParametros:Array = new Array();
   while(arguments[noParam-1].got <> undefined){
      noParam--;
   }
   for(var i=1; i<noParam; i++)
      nuevosParametros.push(arguments[i]);
   alPresionar = arguments[noParam];
   deshabilitar = arguments[noParam+1];
   etiqueta = arguments[noParam+2];
   if (typeof (etiqueta) == "string") {
      this.txt.txt.text = etiqueta;
   }
   this[funcion].apply(null, nuevosParametros);
}

myTrue = {got:true};
myFalse = {got:false};
ini("dumy", "uju 1","uju 2", myTrue, myTrue, myFalse);
ini("dumy", "uju 1","uju 2");
ini("dumy2", "uju 1","uju 2", myFalse, myTrue);
ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", myFalse, myTrue, myTrue);

--

Acidbjazz escribió:


lo q quiero es q eso se pueda escribir así...

Código :

ini("dumy", "uju 1","uju 2", alPresionar, deshabilitar, etiqueta);
ini("dumy", "uju 1","uju 2");
ini("dumy", "uju 1","uju 2", alPresionar, deshabilitar);
ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", alPresionar, deshabilitar);
ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", alPresionar);


:crap: si es q se puede ......

Perdón la tardanza, pero estoy a full de cosas. Basicamente te digo que desde el otro dia, la idea que tenía es crear un propio DataType, como no es tan sencillo en Flash, emule eso y listo, tal cual lo querías, ahora funciona así tal como querías:

Código :

ini("dumy2", "uju 1","uju 2","uju 3", "uju 4", alPresionar, deshabilitar);


^^

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

clabbrowser
Citar            
MensajeEscrito el 10 Oct 2006 03:24 pm
:o gracias.... ^^

Por Acidbjazz

716 de clabLevel



Genero:Masculino  

Lima - Perú

firefox

 

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