2014-04-21 77 views
1

我試圖寫在CoffeeScript中一個簡單的GitHub的API調用,但已經運行到了我無法coffeescript.org和咖啡導軌之間的不一致解釋寶石。我已經檢查過多次製表符/空格,超過了我可以計數的次數,並且覺得必須有一些微妙或愚蠢的東西,我錯過了。的CoffeeScript編譯變化(coffeescript.org VS咖啡軌)

原始代碼

$ -> 
    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的咖啡寶石編譯(這是我的輸出)

備用編譯顯然是註定失敗,似乎並沒有甚至接近我想要實現的。它幾乎看起來像for循環正在嘗試執行內容,因爲你期望在eat food for food in ['toast', 'cheese', 'wine']類型的語法?

這段代碼也輸出,如果你使用其他的在線「嘗試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; 
    }); 

有什麼我錯過了?在使用的版本,編譯標誌差異,被忽略的小的語法錯誤,還是我完全錯誤的版本之間是否有重大變化?

回答

0

這不再是一個問題,但我沒有接近找到答案,爲什麼它已經改變了。

我能夠更改並重新編譯代碼,並將更改反映到代碼中(仍然錯誤地編譯)。我決定在另一個coffeescript文件中手動重新輸入代碼,該文件非常完美。然後我複製/粘貼我的重新輸入的代碼,並且它仍然在另一個文件中工作。

然後我換從現有的CoffeeScript文件中的內容到我是有問題的文件,它甚至不會編譯。我重命名了這個文件,認爲可能有一些我不知道的命名限制,並且它開始正確編譯。然後我改回了文件名,它仍然完美地編譯。請注意,上面我提到編譯正在更新更改,只是編譯不正確(它不是一箇舊版本)。

這裏奇怪的是,我能夠取消所有更改,恢復這是有問題的代碼。將其複製到compileronline中仍然會導致相同的問題,但複製新代碼可以很好地工作。我在舊代碼和新代碼之間進行了差異比較,並且報告沒有差異,儘管上述內容完全可重複。

我可以假設的是,這一個空白/字符問題,即使在手動重新輸入似乎沒有修復它,直到文件被更改。我已經向世界大吼大叫這個不公平,我需要繼續前進,但如果有人有更堅實的理由,我會非常感興趣。