Aquí podría ser tu PUBLICIDAD


mejor manera de hacer param por defecto = una variable?

votos
0

Tengo una variable, y una función para la brevedad permite considerarlo así:

private function applyDiscount (value:Number):Number
{
return value*_discount; //_discount defined somewhere else
}

Está bien, todo está bien, pero dicen que quiero poder llamar a esa función y poder pasar mi propio descuento, pero aún así usar el _discount como valor predeterminado.

Puedo hacer esto:

private function applyDiscount (value:Number, discount:Number = 50):Number
    {
    return value*discount;
    }

Esto hará que el descuento predeterminado sea 50 pero no lo sé en tiempo de ejecución, así que tengo que hacer esto, pero no está permitido en Flex.

private function applyDiscount (value:Number, discount:Number = _discount):Number
    {
    return value*discount;
    }

Entonces mi pregunta es, ¿cuál es la mejor manera de lograr lo mismo que el último ejemplo en Flex?

Gracias.

Publicado el 12/03/2009 a las 19:54
fuente por usuario JD Isaacks
En otros idiomas...        العربية       

2 respuestas

votos
4


private function applyDiscount(value: Number, discount : Number = Number.POSITIVE_INFINITY){
   if(discount == Number.POSITIVE_INFINITY) discount = _discount;
    return value*discount;
}
Respondida el 12/03/2009 a las 08:50
fuente por usuario ForYourOwnGood


Aquí podría ser tu PUBLICIDAD


votos
1

Tal vez tenga el descuento expuesto como propiedad pública para que pueda configurarlo por separado para la llamada al método. p.ej

public function get discount():Number{ 
    return _discount; 
} 

public function set discount(param:Number):void { 
    _discount = param; 
}

private function applyDiscount (value:Number):Number
{
    return value*_discount; //_discount defined somewhere else
}

La función adicional se veía ridícula en los comentarios, así que la he agregado aquí ... Básicamente, podrías hacer que el descuento sea un parámetro opcional.

function applyDiscount(value:Number, ... rest):void {
    if(rest.length > 0) {
        return value*rest[0];
    } else {
        return value*_discount; //_discount defined somewhere else
    }
}

applyDiscount(100, 10); // 10 discount...
applyDiscount(100); // default discount...
Respondida el 12/03/2009 a las 08:05
fuente por usuario Fraser