我正在尝试将一些算法转换为另一种语言,而且我只停留在几行代码上。我正在转换的语言是actionscript并将其转换为lua。
我遇到过这一行
return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b
与
相同s = s*1.525
return c/2*(t*t*((s+1)*t - s)) + b
或与
相同newS = s*1.525
return c/2*(t*t*((newS+1)*t - s)) + b
所以一旦调用了* =,在整个函数中都会改变,所以s的每个实例都是新值,或者它只计算一次并且s保留它之前的值?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
在相同的嵌套级别上从右到左评估赋值运算符。由于您的原始陈述已将s*=1.25
括在括号中,*=
分配在添加1
之前执行,乘以t
等,因此,您的第一个变体是纠正一个。