Question

J'ai une variable et une fonction de brièveté permet de considérer qu'elle ressemble à ceci:

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

OK, tout va bien, mais disons que je veux pouvoir appeler cette fonction et pouvoir passer mon propre rabais, tout en utilisant toujours _discount par défaut.

Je peux faire ceci:

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

Cela fera de la remise par défaut la valeur 50 mais je ne le sais pas à la fin de la période. Je dois donc le faire, mais ce n'est pas autorisé dans Flex.

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

Ma question est donc la suivante: quel est le meilleur moyen d'obtenir le même résultat que dans le dernier exemple dans Flex?

Merci.

Était-ce utile?

La solution


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

Autres conseils

Peut-être que la remise est exposée en tant que propriété publique afin que vous puissiez la définir séparément pour l'appel de méthode. par exemple

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 fonction supplémentaire avait l'air bizarre dans les commentaires, je l'ai donc ajoutée ici ... En gros, vous pouvez faire de la réduction un paramètre facultatif.

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...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top