1

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))

誰かがここで何が起こっているのか説明できますか.

4

1 に答える 1

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])

于 2012-09-30T19:16:27.007 に答える