0

The following code is part of an easing equation. I'm just interested in the syntax.

sqrtf(1 - (t = t / d - 1) * t);

I haven't seen the '=' operator used like this before. What does it do in this context?

Edit: the code is from a well-known Robert Penner easing function, written in ActionScript:

static function easeOut (t:Number, b:Number, c:Number, d:Number):Number {
    return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
}
4

1 に答える 1

4

ここでの=オペレーターは、常に行うことを行います。この場合、変更しtます ( に設定しますt / d - 1)。式のその部分から返される値は、 の新しい値になりtます。

式の後半で使用されるため、これは混乱を招きtます。また、すべてのコンパイラがそれを同じように扱うかどうかはわかりません。つまり、3 番目tは古い値と新しい値のどちらを使用するのでしょうか?

このように方程式を書くことは避けたいと思います。それは怠け者であり、それを行う正当な理由がわかりません。

于 2012-12-19T00:57:28.393 に答える