0

私は明らかに機能する次のコードを持っていますが、これをcoffeescriptで表現するより簡潔な方法があると確信しています:

  todos = []

  for i in [1..10]                                                                            
    todos.push App.store.find App.Todo, i 
4

1 に答える 1

1
todos = (App.store.find(App.Todo, i) for i in [1..10])

囲んでいる括弧は、戻り値を配列に収集して返すリスト内包表記を示します。

次の 2 つの例を考えてみましょう。括弧を囲むと、Coffeescript がループを解釈する方法が変わります。

# With parentheses (list comprehension)
todos = (App.store.find(App.Todo, i) for i in [1..10])

# Without parentheses (plain old loop)
todos = App.store.find(App.Todo, i) for i in [1..10]

そして出力:

// With parentheses
todos = (function() {
  var _i, _results;
  _results = [];
  for (i = _i = 1; _i <= 10; i = ++_i) {
    _results.push(App.store.find(App.Todo, i));
  }
  return _results;
})();

// Without parentheses
for (i = _i = 1; _i <= 10; i = ++_i) {
  todos = App.store.find(App.Todo, i);
}
于 2012-10-20T07:17:59.927 に答える