我有一個關於coffeescript for循環的問題。for循環中的多個條件
單條件的情況下通過以下步驟實現:
-> foo for foo in foos when foo is bar
和它產生:
(function() {
var foo, _i, _len, _results;
_results = [];
for (_i = 0, _len = foos.length; _i < _len; _i++) {
foo = foos[_i];
if (foo === bar) _results.push(foo);
}
return _results;
});
這是完美的。
但是,我有一個情況,涉及多個條件,並且上面的構造不支持他們,據我所知。這一個:
->
for foo in foos
if foo is bar
foo
else if foo isnt bar
bar
不和它編譯成:
(function() {
var foo, _i, _len, _results;
_results = [];
for (_i = 0, _len = foos.length; _i < _len; _i++) {
foo = foos[_i];
if (foo === bar) {
_results.push(foo);
} else if (foo !== bar) {
_results.push(bar);
} else {
_results.push(void 0);
}
}
return _results;
});
這是確定的,但我不知道是否有擺脫額外else
聲明的方式。現在我補充說:
else
return undefined
它可以防止推到_results
它的工作原理。
那麼,是否有一個類似於第一個例子但有多個條件的咖啡腳本?
我如果...其他的解決方案和JavaScript的手動重構之後因爲似乎沒有結構去在coffeescript滿足我正在尋找的東西(一種不返回值的變量這是一個問題,特別是在循環內循環)。 – Krule