【问题标题】:Coffeescript compilation variations (coffeescript.org vs coffee-rails)Coffeescript 编译变体(coffeescript.org vs coffee-rails)
【发布时间】:2014-04-21 01:05:17
【问题描述】:

我正在尝试在 coffeescript 中编写一个简单的 github API 调用,但在 coffeescript.org 和 coffee-rails gem 之间遇到了我无法解释的不一致。我检查了多个选项卡/空格组合的次数超出了我的计数,并且觉得一定有一些微妙或愚蠢的东西我遗漏了。

原始代码

$ ->
  gistids = ['5100088']
  for gistid in gistids
    $.ajax
      url: 'https://api.github.com/gists/'+gistid,
      type: 'GET',
      dataType: 'jsonp'
    .success (gistdata) ->
      console.log(gistdata.data.files)
    .fail (e) ->
      console.log(e)

Coffeescript.org 编译

它在 coffeescript.org 上很高兴地编译为以下内容(通过控制台运行时,功能完全符合预期)。

$(function() {
  var gistid, gistids, _i, _len, _results;
  gistids = ['5100088'];
  _results = [];
  for (_i = 0, _len = gistids.length; _i < _len; _i++) {
    gistid = gistids[_i];
    _results.push($.ajax({
      url: 'https://api.github.com/gists/' + gistid,
      type: 'GET',
      dataType: 'jsonp'
    }).success(function(gistdata) {
      return console.log(gistdata.data.files);
    }).fail(function(e) {
      return console.log(e);
    }));
  }
  return _results;
});

Rails-coffee gem 编译(这是我的输出)

替代编译显然注定要失败,而且似乎与我想要实现的目标相去甚远。看起来for 循环正在尝试按照您在eat food for food in ['toast', 'cheese', 'wine'] 类型语法中所期望的那样执行内容?

如果你使用另一个在线的 'try coffeescript' 类型的站点,也会输出此代码,例如http://www.compileonline.com/try_coffeescript_online.php

  $(function() {
    var gistid, gistids, _i, _len, _ref, _results;
    _ref = gistids($.ajax({
      url: 'https://api.github.com/gists/' + gistid,
      type: 'GET',
      dataType: 'jsonp'.success(function(gistdata) {
        return console.log(gistdata.data.files).fail(function(e) {
          return console.log(e);
        });
      })
    }));
    _results = [];
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      gistid = _ref[_i];
      _results.push(gistids = ['5100088']);
    }
    return _results;
  });

我错过了什么?正在使用的版本之间是否有重大变化、编译标志差异、被忽略的小语法错误,还是我完全弄错了?

【问题讨论】:

    标签: javascript ruby-on-rails compilation coffeescript


    【解决方案1】:

    这不再是一个问题,但离找到它为什么改变的答案还差得远。

    我能够更改和重新编译代码,更改会反映在代码中(仍然编译不正确)。我决定在另一个咖啡脚本文件中手动重新输入代码,它运行良好。然后我复制/粘贴了我重新输入的代码,它仍然在另一个文件中工作。

    然后我将现有咖啡脚本文件中的内容交换到我遇到问题的文件中,它甚至无法编译。我重命名了该文件,认为可能存在一些我不知道的命名限制,并且它开始正确编译。然后我改回文件名,它仍然可以完美编译。请注意,上面我提到编译正在随着更改而更新,只是编译不正确(它不是旧版本)。

    这里奇怪的是,我能够撤消所有更改并恢复有问题的代码。将其复制到 compileronline 仍然会导致相同的问题,但复制新代码效果很好。我对旧代码和新代码进行了差异比较,结果没有任何差异,尽管上面的代码是完全可重复的。

    我只能假设这是一个 没有在差异中显示的空格/字符问题,即使手动重新输入似乎第一次没有解决它,直到文件已更改。我已经对世界大喊大叫,这已经够不公平了,我需要继续前进,但如果有人对此有更充分的理由,我会非常感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2011-12-31
      • 2023-04-04
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多