我想在 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];
}
}
我有一个不使用li
andlj
变量的工作副本,即它检查是否i<bar.length
和j<baz.length
. 这对大型阵列有性能影响,我想摆脱它。
问题是我需要创建li
andlj
变量。我想获取i
andj
标记并将“l”连接到它们以制作新标记。我找不到在 sweet.js 中连接标记的方法,例如,在 cpp 预处理器中使用##
运算符。我确实理解 sweet.js 试图与 cpp 预处理器不同的是卫生,所以我不确定这个遗漏是否是有意的。我错过了什么吗?这是 sweet.js 施加的限制吗?如果是,是否有解决方法?
我正在使用最新版本的 sweet.js,2.0 版。这是他们的在线编辑器使用的相同版本