0

私は変数を持っており、簡潔にするための関数は次のように見えると考えてみましょう:

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

OK、それはすべてうまくいきますが、その関数を呼び出して独自の割引を渡すことができるようにしたいと言いますが、デフォルトとして _discount を使用します。

私がすることができます:

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

これにより、割引のデフォルトが 50 になりますが、作成時にはわからないため、これを行う必要がありますが、Flex では許可されていません。

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

だから私の質問は、フレックスで最後の例と同じことを達成するための最良の方法は何ですか?

ありがとう。

4

2 に答える 2

4

private function applyDiscount(value: Number, discount : Number = Number.POSITIVE_INFINITY){
   if(discount == Number.POSITIVE_INFINITY) discount = _discount;
    return value*discount;
}
于 2009-03-12T19:50:24.820 に答える
1

割引をパブリックプロパティとして公開して、メソッド呼び出しとは別に設定できるようにすることもできます。例えば

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
}

追加の関数はコメントで間抜けに見えたので、ここに追加しました...基本的に、割引をオプションのパラメーターにすることができます。

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...
于 2009-03-12T19:05:10.857 に答える