2

たとえば6のサイクル制限で特定の値をインクリメントしています。このコードをどのように短くできるか興味があります。

function Cycle_Value(inc_value:Number = 5, times:Number = 3):Number
{
    var return_value:Number = inc_value;        

    while(times >= 1)
    {
       if(inc_value < 6)
       {
          inc_value++;
          return_value = inc_value;
       }
       else if(inc_value == 6)
       {
          return_value = 1;
          inc_value = 1;
       }
       else
          trace(inc_value+" is out of bounds");

        times--;
    }
    return return_value;
}

Sample Output: Cycle_Value(5,2) = 1, Cycle_Value(6,10) = 4
4

1 に答える 1

2

これを試して:

function Cycle_Value(inc_value:Number = 5, times:Number = 3):Number
{
   return (inc_value -1 + times) % 6 + 1; 
}

モジュロ演算子の詳細については、http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#moduloを参照してください。

注1:1..6ではなく0..5の範囲の数値を使用する場合は、次の式を使用するだけで済みます。

(inc_value + times) % 6

注2:個人的には、異なる名前を使用していました。たとえば、inc_valueの代わりにvalueを使用し、timesの代わりにincを使用しました。

于 2012-11-27T12:41:26.980 に答える