数学计算在coffeescript中打破

时间:2012-09-30 19:09:36

标签: coffeescript

我有一个用coffeescript编写的长等式,在编译为JavaScript时会调用函数调用:

CoffeeScript的:

@u[idx] = @max(0, currU + t * ((@dU * ((@uu[right] + @uu[left] + @uu[bottom] + @uu[top]) -4 * currU) - d2) + currF * (1.0 - currU)))

JavaScript:

this.max(0, currU + t * ((this.dU * ((this.uu[right] + this.uu[left] + this.uu[bottom] + this.uu[top])(-4 * currU)) - d2) + currF * (1.0 - currU)));

问题在于这一部分:

((@uu[right] + @uu[left] + @uu[bottom] + @uu[top]) -4 * currU)

变成函数调用:

((this.uu[right] + this.uu[left] + this.uu[bottom] + this.uu[top])(-4 * currU))

有人可以解释这里发生的事情。

1 个答案:

答案 0 :(得分:3)

你想要这个:

@u[idx] = @max(0, currU + t * ((@dU * ((@uu[right] + @uu[left] + @uu[bottom] + @uu[top]) - 4 * currU) - d2) + currF * (1.0 - currU)))

编译为:

this.u[idx] = this.max(0, currU + t * ((this.dU * ((this.uu[right] + this.uu[left] + this.uu[bottom] + this.uu[top]) - 4 * currU) - d2) + currF * (1.0 - currU)));

愚蠢的小问题是-4,与- 4

如果没有空格,编译器会假定-4 * currU'函数'的参数,(@uu[right] + @uu[left] + @uu[bottom] + @uu[top])