在 sweet.js 情况下使用全局变量
using global variables in a sweet.js case
我正在尝试创建一个宏,每次调用它时都会将递增的值扩展到输出中。到目前为止我已经得到了这个,但它每次都会将值重新初始化为 0:
macro test1 {
case { _ $x
} => {
var n = n ? n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()
产量:
0;
0;
当我想要的是:
0;
1;
如何将 n
定义为全局变量,以便我可以在宏外递增和保留它的值?
更新:
我可以通过将分配给 n
更改为评估来使其工作,但这真的感觉像是作弊:
var n = eval("if (typeof n != 'undefined') n++; else n=0; n")
目前(有计划让它变得更好)你可以只使用全局对象:
macro test1 {
case { _ $x
} => {
window.n = typeof window.n !== 'undefined' ? window.n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()
我正在尝试创建一个宏,每次调用它时都会将递增的值扩展到输出中。到目前为止我已经得到了这个,但它每次都会将值重新初始化为 0:
macro test1 {
case { _ $x
} => {
var n = n ? n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()
产量:
0;
0;
当我想要的是:
0;
1;
如何将 n
定义为全局变量,以便我可以在宏外递增和保留它的值?
更新:
我可以通过将分配给 n
更改为评估来使其工作,但这真的感觉像是作弊:
var n = eval("if (typeof n != 'undefined') n++; else n=0; n")
目前(有计划让它变得更好)你可以只使用全局对象:
macro test1 {
case { _ $x
} => {
window.n = typeof window.n !== 'undefined' ? window.n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()