我試圖創建一個宏,在每次調用時將增量值展開到輸出中。到目前爲止,我已經得到了這一點,但它的價值每一次重新初始化爲0:在sweet.js情況下使用全局變量
macro test1 {
case { _ $x
} => {
var n = n ? n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1()
test1()
產量:
0;
0;
當我要的是:
0;
1;
如何我是否將n
定義爲全局變量,以便我可以在宏之外增加並保留其值?
更新:
我可以得到它通過改變一個eval分配給n
工作,但這次真的感覺就像作弊:
var n = eval("if (typeof n != 'undefined') n++; else n=0; n")
你想達到的不是Sweet.js在MHO中的含義。其實,在這種情況下你並不需要Sweet.js。它可以通過純Java JS實現,如線程[here](http://stackoverflow.com/questions/1535631/static-variables-in-javascript)中所述。 – Season
如果您有權訪問全局對象,如 「窗口」,則可以通過向窗口對象添加諸如 「n」的屬性來利用該對象。 – Don
@季節這實際上只是一個簡化的測試用例。我真的需要sweet.js來進行宏觀擴張。 – Michael