Coffeescript 1.7.1意外的新行怪异
我有以下代码(大约一年前),用于在应用程序中使用zipcodes。今天我不得不更改一个值,现在突然我无法再编译它了。我在“hilleroed”中的“h”处收到了一条意想不到的新行 我一辈子都搞不清楚出了什么事。这是一个错误还是我遗漏了什么?如果我将代码粘贴到coffeescript.org上的在线编译器中,我会得到相同的错误。如何修复 编辑: 我正在使用咖啡脚本1.7.1。它在1.6.3中起作用 更新:Coffeescript 1.7.1意外的新行怪异,coffeescript,Coffeescript,我有以下代码(大约一年前),用于在应用程序中使用zipcodes。今天我不得不更改一个值,现在突然我无法再编译它了。我在“hilleroed”中的“h”处收到了一条意想不到的新行 我一辈子都搞不清楚出了什么事。这是一个错误还是我遗漏了什么?如果我将代码粘贴到coffeescript.org上的在线编译器中,我会得到相同的错误。如何修复 编辑: 我正在使用咖啡脚本1.7.1。它在1.6.3中起作用 更新: 这是一个意外错误,请参见问题出在Office对象中。此代码失败: offices:
这是一个意外错误,请参见问题出在Office对象中。此代码失败:
offices:
ringsted: [0..2690]
.concat [2770, 2791]
.concat [4000..4030]
.concat [4050..4990]
hilleroed: [2700..2765]
.concat [2980..3670]
.concat [4040]
kgslyngby: [2800..2970]
在这一过程中:
offices:
ringsted: [0..2690].concat [2770, 2791].concat [4000..4030].concat [4050..4990]
hilleroed: [2700..2765].concat [2980..3670].concat [4040]
kgslyngby: [2800..2970]
如果确实要保留换行符,请添加一些参数:
offices:
ringsted: ([0..2690]
.concat [2770..2791]
.concat [4000..4030]
.concat [4050..4990])
hilleroed: ([2700..2765]
.concat [2980..3670]
.concat [4040])
kgslyngby: [2800..2970]
编译器似乎对对象定义的结束位置感到困惑。如果你不考虑父母,你会得到这个js:
// without parens
var _i, _j, _k, _l, _results, _results1, _results2, _results3;
({
offices: {
ringsted: (function() {
_results3 = [];
for (_l = 0; _l <= 233; _l++){ _results3.push(_l); }
return _results3;
}).apply(this)
}.concat((function() {
_results2 = [];
for (_k = 2770; _k <= 2791; _k++){ _results2.push(_k); }
return _results2;
}).apply(this)).concat((function() {
_results1 = [];
for (_j = 4000; _j <= 4030; _j++){ _results1.push(_j); }
return _results1;
}).apply(this)).concat((function() {
_results = [];
for (_i = 4050; _i <= 4990; _i++){ _results.push(_i); }
return _results;
}).apply(this))
});
//不带参数
变量i、j、k、l、结果1、结果2、结果3;
({
办公室:{
林斯特德:(函数(){
_结果3=[];
对于(_l=0;_l可能您的编辑器切换了换行符方案,或插入了制表符而不是空格。请还原并重试,并尝试确保不会发生这种情况。复制已粘贴到此处且可能已由格式化程序清理的内容时,很难进行诊断。您的编辑器是否允许您查看空白字符/行结尾?试过了,没有雪茄。如果是这样的话,它也会失败得更早。如果你只是把这里贴的东西复制到coffeescript.org的“try coffeescript”你会得到同样的错误。你是对的,看起来plnkr使用的是Coffee 1.6.3。plnkr一定使用的是旧版本的coffeescript。如果我将你的示例中的代码复制粘贴到coffeescript.org上的编辑器中,我会得到错误。你尝试过使用coffeescript.org的Supreme lint吗?它大多数时候都会发现类似的错误。我只是尝试过使用1.6.3进行编译,而且很有效。看起来它可能是1.7.1中的一个bug。@Freshyeball我差不多每天都在用coffeescript,已经有2年了。到目前为止,我还没有用过一根棉线。我会试试看,但它开始看起来像1.7.1中的一个bug。有效,有效,失败。这些都是coffeescript.org链接的缩短版本,非缩短版本是太大了,无法发表评论。希望第三个案例将有助于将问题缩小到任何想要提交错误报告的人。
// without parens
var _i, _j, _k, _l, _results, _results1, _results2, _results3;
({
offices: {
ringsted: (function() {
_results3 = [];
for (_l = 0; _l <= 233; _l++){ _results3.push(_l); }
return _results3;
}).apply(this)
}.concat((function() {
_results2 = [];
for (_k = 2770; _k <= 2791; _k++){ _results2.push(_k); }
return _results2;
}).apply(this)).concat((function() {
_results1 = [];
for (_j = 4000; _j <= 4030; _j++){ _results1.push(_j); }
return _results1;
}).apply(this)).concat((function() {
_results = [];
for (_i = 4050; _i <= 4990; _i++){ _results.push(_i); }
return _results;
}).apply(this))
});