0

ここにこのCoffeescriptがあります:

brew = (args...) =>
  for e in args
    alert e
    null

brew('fo', 're', 'eo');

機能させるためにそこにnullを配置する必要がなかったらいいのにと思いますが、残念ながら、これは次のようにコンパイルされます。

brew = function() {
  var args, e, _i, _len, _results;
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
  _results = [];
  for (_i = 0, _len = args.length; _i < _len; _i++) {
    e = args[_i];
    alert(e);
    _results.push(null);
  }
  return _results;
};

brew('fo', 're', 'eo');

しかし今、私は3つの不要な行を持っています:

 _results = [];
 _results.push(null);
 return _results;

任意のヒント?

4

2 に答える 2

5

関数が何も返さない場合は、次のように言います。

brew = (args...) =>
  for e in args
    console.log e
  return

これの副作用は、forループが配列に値を設定しないことです。CoffeeScript は、forループ式の結果が使用されないことを保証できるため、わざわざ計算する必要がありません。returnCoffeeScript ではすべてが式であり、関数は最後の式の値を返すことに注意してください。そのため、決して使用されないものを計算する時間を無駄にしないように、明示的な s をスローする必要がある場合があります。

その CoffeeScript ループは次のようになります。

for (_i = 0, _len = args.length; _i < _len; _i++) {
  e = args[_i];
  console.log(e);
}

明示的な「何も返さない」とreturnすべてのものを抑制することに注意してください_result

ここ で見る こと が でき ます.

于 2013-09-19T15:56:12.627 に答える