0

私は次のようにコーヒースクリプトを書きます:

split_typer_text = typer_text.split ''
test = (char) ->
  setTimeout (-> element.text(element.text() + char)), 100
test char for char in split_typer_text

しかし、coffeescriptはこれに準拠しています:

test = function(char) {
    return setTimeout((function() {
      return element.text(element.text() + char);
    }), 100);
  };
  _results = [];
  for (_i = 0, _len = split_typer_text.length; _i < _len; _i++) {
    char = split_typer_text[_i];
    _results.push(test(char));
  }
  return _results;

関数を実行したいのですが、配列は必要ありません。実行する方法?

4

2 に答える 2

0

ここでテスト機能を実行しています。

_results.push(test(char));
#-------------^^^^^^^^^^

すべてが CoffeeScript の式であり、forループが含まれます。forループの結果は配列であるため、コンパイルされた JavaScript では_results配列と._results.push

場合によっては、CoffeeScript コンパイラーは、forループの値が使用されないことを保証_resultsできるため、コンパイル時に最適化することができます。たとえば、この CoffeeScript では次のようになります。

f = ->
    i for i in [0..11]
    42

forloops 値は決して使用されないことが保証されているため、JavaScript には配列がありません。

var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
  return 42;
};

デモ

ただし、この場合、forループは関数の戻り値であるため、配列が必要です。

f = ->
    i for i in [0..11]

そして、配列が JavaScript に取り込まれていることがわかります。

var f;

f = function() {
  var i, _i, _results;

  _results = [];
  for (i = _i = 0; _i <= 11; i = ++_i) {
    _results.push(i);
  }
  return _results;
};

デモ

配列で時間を無駄にしたくない場合は、配列が使用されないことを CoffeeScript に伝える必要があります。その方法はコンテキストによって異なります。たとえば、空returnを追加して、周囲の関数が何も返さないことを示すことができます。

f = ->
    i for i in [0..11]
    return

そして、あなたはこれを得るでしょう:

var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
};

デモ

于 2013-04-27T18:32:52.593 に答える
0

そのソースをコンパイルすると、これが得られます...

var char, split_typer_text, test, _i, _len;

split_typer_text = typer_text.split('');

test = function(char) {
  return setTimeout((function() {
    return element.text(element.text() + char);
  }), 100);
};

for (_i = 0, _len = split_typer_text.length; _i < _len; _i++) {
  char = split_typer_text[_i];
  test(char);
}

おそらくあなたのcoffeescriptを更新してください...

bash-3.2$ coffee --version
CoffeeScript version 1.6.2
于 2013-04-27T09:47:31.387 に答える