3

我想在 sweet.js 中创建一个宏,允许用户使用类似于张量演算中使用的索引符号的东西在 javascript 中编写 for 循环。如果我为它提供类似的东西:

tensor foo[i][j] = baz[j] + bar[i];

sweet.js 会将其扩展为:

var i, j, li, lj;
for(i=0, li=bar.length; i<li; ++i){
    for(j=0, lj=baz.length; j<lj; ++j){
        foo[i][j] = baz[j] + bar[i];
    }
}

我有一个不使用liandlj变量的工作副本,即它检查是否i<bar.lengthj<baz.length. 这对大型阵列有性能影响,我想摆脱它。

问题是我需要创建liandlj变量。我想获取iandj标记并将“l”连接到它们以制作新标记。我找不到在 sweet.js 中连接标记的方法,例如,在 cpp 预处理器中使用##运算符。我确实理解 sweet.js 试图与 cpp 预处理器不同的是卫生,所以我不确定这个遗漏是否是有意的。我错过了什么吗?这是 sweet.js 施加的限制吗?如果是,是否有解决方法?

我正在使用最新版本的 sweet.js,2.0 版。这是他们的在线编辑器使用的相同版本

4

0 回答 0