我想在sweet.js中创建一个宏,允许用户使用类似于张量计算中使用的index notation的东西在javascript中编写循环。如果我提供类似的东西:
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
和lj
变量的工作副本,即它会检查i<bar.length
和j<baz.length
。这对大型阵列有性能影响,我想放弃它。
问题是我需要创建li
和lj
变量。我想取i
和j
标记并将“l”连接到它们以创建新标记。我无法在sweet.js中找到连接令牌的方法,例如,在使用##
运算符的cpp预处理器中。我确实理解sweet.js试图成为hygenic而不像cpp预处理器,所以我不确定这个遗漏是否有意。我错过了什么吗?这是sweet.js强加的限制吗?如果是,是否有解决方法?
我使用的是最新版本的sweet.js,版本2.0。这与其在线编辑器使用的版本相同