Javascript Coffeescript添加了一个return语句,在本地使用时我不需要它;可能是一个崇高的文本2问题

Javascript Coffeescript添加了一个return语句,在本地使用时我不需要它;可能是一个崇高的文本2问题,javascript,coffeescript,sublimetext2,Javascript,Coffeescript,Sublimetext2,当我在上使用“Try coffeescript”时,下面的coffeescript编译成精细的javascript 页然而,在我的电脑上,我得到了我不想要的return。drawAC前面不应该有return。你知道我该怎么修吗。看起来缩进应该是正确的,因为当我复制、粘贴到coffeescript网站上时,我没有任何问题 咖啡脚本片段 plotAC = (fc,c,d) -> acData = (ac(fc, c, d, q) for q in quantities) qAC

当我在上使用“Try coffeescript”时,下面的coffeescript编译成精细的javascript 页然而,在我的电脑上,我得到了我不想要的
return
drawAC
前面不应该有
return
。你知道我该怎么修吗。看起来缩进应该是正确的,因为当我复制、粘贴到coffeescript网站上时,我没有任何问题

咖啡脚本片段

plotAC = (fc,c,d) ->
    acData = (ac(fc, c, d, q) for q in quantities)
    qACpairs = d3.zip(quantities, acData)
    qACpairs = (item for item in qACpairs when item[1] < 12)
    drawAC = canvas.append('svg:path')
                   .attr({
                        d: createsvgpath(firmXscale)(qACpairs),
                        stroke: 'steelblue'                     
                    })
    return 
plotAC=(fc,c,d)->
acData=(数量为q时的ac(fc,c,d,q)
qACpairs=d3.zip(数量、数据)
qACpairs=(当项目[1]<12时,qACpairs中的项目对应项目)
drawAC=canvas.append('svg:path')
艾特先生({
d:createsvgpath(firmXscale)(qACpairs),
笔触:“钢蓝”
})
返回
使用CoffeeScript 1.4.0版在我的计算机上编译JS

  plotAC = function(fc, c, d, q) {
    var acData, drawAC, item, qACpairs;
    acData = (function() {
      var _i, _len, _results;
      _results = [];
      for (_i = 0, _len = quantities.length; _i < _len; _i++) {
        q = quantities[_i];
        _results.push(ac(params.fc, params.c, params.d, q));
      }
      return _results;
    })();
    qACpairs = d3.zip(quantities, acData);
    qACpairs = (function() {
      var _i, _len, _results;
      _results = [];
      for (_i = 0, _len = qACpairs.length; _i < _len; _i++) {
        item = qACpairs[_i];
        if (item[1] < 12) {
          _results.push(item);
        }
      }
      return _results;
    })();
    return drawAC = canvas.append('svg:path').attr({
      d: createsvgpath(firmXscale)(qACpairs),
      stroke: 'steelblue'
    });
  };

  return;
plotAC=函数(fc、c、d、q){
var acData、drawAC、项目、qACpairs;
acData=(函数(){
变量i,len,结果;
_结果=[];
对于(_i=0,_len=quantities.length;_i<_len;_i++){
q=数量[_i];
_结果:push(ac(params.fc,params.c,params.d,q));
}
返回结果;
})();
qACpairs=d3.zip(数量、数据);
qACpairs=(函数(){
变量i,len,结果;
_结果=[];
对于(_i=0,_len=qACpairs.length;_i<_len;_i++){
项目=qACpairs[_i];
如果(项目[1]<12){
_结果:推送(项目);
}
}
返回结果;
})();
return drawAC=canvas.append('svg:path').attr({
d:createsvgpath(firmXscale)(qACpairs),
笔触:“钢蓝”
});
};
返回;
我要补充的是,以下方法很有效。然而,我觉得这似乎并不合适

有效的代码

plotAC = (fc,c,d) ->
    acData = (ac(fc, c, d, q) for q in quantities)
    console.log(acData)
    qACpairs = d3.zip(quantities, acData)
    console.log(qACpairs);
    qACpairs = (item for item in qACpairs when item[1] < 12)
    console.log(qACpairs);

    drawAC = canvas.append('svg:path')
                   .attr({
                        d: createsvgpath(firmXscale)(qACpairs),
                        stroke: 'steelblue'                     
                    })

                    return
plotAC=(fc,c,d)->
acData=(数量为q时的ac(fc,c,d,q)
console.log(acData)
qACpairs=d3.zip(数量、数据)
控制台日志(qACpairs);
qACpairs=(当项目[1]<12时,qACpairs中的项目对应项目)
控制台日志(qACpairs);
drawAC=canvas.append('svg:path')
艾特先生({
d:createsvgpath(firmXscale)(qACpairs),
笔触:“钢蓝”
})
返回
完整代码

dim = 
    width: 1200,
    height: 600,
    padding: 60,
    paddingL: 35,
    paddingR: 25      


canvas = d3.select('#longRunEqm')
           .append("svg:svg")
           .attr
                'width': dim.width,
                'height': dim.height

# Rectangle to show boundaries
canvas.append('svg:rect')
     .attr({
         x: 0,
         y: 0,
         height: dim.height,
         width: dim.width
     }).style({
         fill: 'none',
         stroke: 'gray',
         'stroke-width': '2px'
     })


###
========================================================================
Market Demand and Supply functions
========================================================================
###
params = 
        a: 9,
        b: 0.1,
        c: 2,
        d:0.1,
        fc: 20,
        numFirmsOrig: 100,
        numFirms: 100

quantities = d3.range(0,95)

supplyPrices = d3.range(2,11)

inverseDemand = (a,b,q) -> a - (b*q)

demand = (a,b,p) -> (a-p)/b

inverseSupply = (c,d,q) -> c + (d*q)

tc = (fc,c,d,q) -> c*q + (d*q*q)/2 + fc

ac = (fc,c,d,q) -> tc/q

supply = (c,d,p) -> (p-c)/d

marketSupply = (c, d, p) -> (params.numFirms * supply(c,d,p))/100

eqmQuantity = (a,b,c,d) -> (a-c)/(b+d)

eqmPrice = (a,b,c,d) -> ((a*d) + (b*c))/(b+d)


###
========================================================================
Scales
========================================================================
###

marketXscale = d3.scale.linear().domain([0,105])
                       .range([0+dim.paddingL, (dim.width/2)-dim.paddingR])

firmXscale = d3.scale.linear().domain([0,105])
                     .range([(dim.width/2)+dim.paddingL, \
                              dim.width-dim.paddingR])

yscale = d3.scale.linear().domain([0,12])
                          .range([dim.height-dim.padding, 0+dim.padding])

createsvgpath = (panel) ->
    d3.svg.line()
        .x (d) ->
            panel(d[0])
        .y (d) ->
            yscale(d[1])
        .interpolate('linear')



###
========================================================================
 Axes
========================================================================
###

# X-AXIS MARKET GROUP
xaxisMarket = d3.svg.axis()
              .scale(marketXscale)
              .orient('bottom')
              .ticks(10)
              .tickSubdivide(1)

xaxisMarketgroup = canvas.append('g')
                .attr
                    class: 'axis xaxis',
                    transform: "translate(0,#{dim.height-dim.padding})"
                .call(xaxisMarket)

xaxisMarketgroup.selectAll('text')
          .attr
              transform: "translate(10,0) rotate(45)"
              'text-anchor': 'start'

# xaxisMarket label
xMarketlabel = canvas.append('svg:text')
               .attr
                    x: marketXscale(80),
                    y: yscale(0),
                    dy: 50,
                    'text-anchor': 'middle',
                    class: 'textlabel'
               .text('Market Quantity')
               .style
                    'font-size': '60%'  

# xaxisFirm label
xFirmlabel = canvas.append('svg:text')
                   .attr
                        x: firmXscale(80),
                        y: yscale(0),
                        dy: 50,
                        'text-anchor': 'middle',
                        class: 'textlabel'
                   .text('Firm Quantity')
                   .style
                        'font-size': '60%'                                  

# X-AXIS FIRM GROUP
xaxisFirm = d3.svg.axis()
              .scale(firmXscale)
              .orient('bottom')
              .ticks(10)
              .tickSubdivide(1)

xaxisFirmgroup = canvas.append('g')
                       .attr
                           class: 'axis xaxis',
                           transform: "translate(0,#{dim.height-dim.padding})"
                       .call(xaxisFirm)

xaxisFirmgroup.selectAll('text')
              .attr
                  transform: "translate(10,0) rotate(45)"
                  'text-anchor': 'start'



yaxis = d3.svg.axis()
              .scale(yscale)
              .orient('left')
              .ticks(10)
              .tickSubdivide(1)

# Y-AXIS MARKET GROUP
yaxisMarketgroup = canvas.append('svg:g')
                .attr
                    class: 'axis',
                    transform: "translate(#{dim.paddingL},0)"
                .call(yaxis)


# Y-AXIS FIRM GROUP
yaxisFirmgroup = canvas.append('svg:g')
                       .attr
                           class: 'axis',
                           transform: "translate(#{dim.width/2 + dim.paddingL},0)"
                       .call(yaxis)



# yaxis label
ylabelMarketgroup = canvas.append('svg:text')
                          .attr
                               x: 0,
                               y: 0,
                               'text-anchor': 'middle',
                               transform: 'translate(40,40)',
                               class: 'textlabel'
                          .text('Price')


ylabelFirmgroup = canvas.append('svg:text')
                        .attr
                             x: 0,
                             y: 0,
                             'text-anchor': 'middle',
                             transform: "translate(#{dim.width/2 + dim.paddingL},40)",
                             class: 'textlabel'
                        .text('Price')



###
========================================================================
 Plot supply curve
========================================================================     
###

plotSupply = (c,d,panel,label) ->
    if panel == firmXscale
        supplyFunction = supply
    else
        supplyFunction = marketSupply

    quantitySupplied = (supplyFunction(params.c, params.d, p) for p in \
                            supplyPrices)

    quantityPricePairsSupply = d3.zip(quantitySupplied, supplyPrices)

    # Keep data points where quantity is positive and price is positive
    quantityPricePairsSupply = (item for item in \
        quantityPricePairsSupply when (0 <= item[0] <= 100) and item[1] >=0)

    numQuantityPricePairs = quantityPricePairsSupply.length

    drawSupplyFunction = canvas.append('svg:path')
                           .attr
                                d: createsvgpath(panel)(quantityPricePairsSupply)
                                stroke: '#7E8F7C'    

    labelSupplyFunction = canvas.append('svg:text')
                                .attr({
                                    x: panel(quantityPricePairsSupply[numQuantityPricePairs-1][0]),
                                    y: yscale(quantityPricePairsSupply[numQuantityPricePairs-1][1]),
                                    dx: -5,
                                    dy: -5,
                                    class: 'textlabel',
                                    'text-anchor': 'start'})
                                .style({
                                    stroke: '#7E8F7C' 
                                    })                                     
                                .text(label)

    return 



plotSupply(params.c, params.d, marketXscale, 'S')
plotSupply(params.c, params.d, firmXscale, 'MC')
params.numFirms = 150
plotSupply(params.c, params.d, marketXscale, 'S1')

###
========================================================================
 Plot AC curve
========================================================================
###
plotAC = (fc,c,d) ->
    acData = (ac(fc, c, d, q) for q in quantities)
    qACpairs = d3.zip(quantities, acData)
    qACpairs = (item for item in qACpairs when item[1] < 12)
    drawAC = canvas.append('svg:path')
                   .attr({
                        d: createsvgpath(firmXscale)(qACpairs),
                        stroke: 'steelblue'                     
                    })
    return

plotAC(params.fc, params.c, params.d)
dim=
宽度:1200,
身高:600,
填充:60,
paddingL:35,
填充R:25
canvas=d3。选择(“#longRunEqm”)
.append(“svg:svg”)
艾特先生
“宽度”:dim.width,
“高度”:dim.height
#显示边界的矩形
append('svg:rect')
艾特先生({
x:0,,
y:0,
高度:dim.height,
宽度:dim.width
}).风格({
填写:'无',
笔画:'灰色',
“笔划宽度”:“2px”
})
###
========================================================================
市场供求函数
========================================================================
###
参数=
a:9,
b:0.1,
c:2,
d:0.1,
fc:20,
数量:100,
numFirms:100
数量=d3.范围(0,95)
供应价格=d3.范围(2,11)
反向需求=(a,b,q)->a-(b*q)
需求=(a、b、p)->(a-p)/b
反向供应=(c,d,q)->c+(d*q)
tc=(fc,c,d,q)->c*q+(d*q*q)/2+fc
ac=(fc,c,d,q)->tc/q
供应=(c、d、p)->(p-c)/d
marketSupply=(c,d,p)->(params.numFirms*supply(c,d,p))/100
eqmQuantity=(a,b,c,d)->(a-c)/(b+d)
eqmPrice=(a,b,c,d)->(a*d)+(b*c))/(b+d)
###
========================================================================
规模
========================================================================
###
marketXscale=d3.scale.linear().domain([0105])
.范围([0+尺寸填充L,(尺寸宽度/2)-尺寸填充R])
firmXscale=d3.scale.linear().domain([0105])
.范围([(尺寸宽度/2)+尺寸填充\
尺寸宽度尺寸填充器])
yscale=d3.scale.linear().domain([0,12])
.范围([dim.height-dim.padding,0+dim.padding])
createsvgpath=(面板)->
d3.svg.line()
.x(d)->
面板(d[0])
.y(d)->
yscale(d[1])
.插值('线性')
###
========================================================================
斧头
========================================================================
###
#X轴市场群
xaxisMarket=d3.svg.axis()
.规模(市场规模)
.orient('底部')
.滴答声(10)
.1.细分(1)
xaxisMarketgroup=canvas.append('g')
艾特先生
类:'axis xaxis',
转换:“转换(0,#{dim.height dim.padding})”
.电话(xaxisMarket)
xaxisMarketgroup.selectAll('text')
艾特先生
变换:“平移(10,0)旋转(45)”
“文本锚定”:“开始”
#Xaxis市场标签
xMarketlabel=canvas.append('svg:text')
艾特先生
x:marketXscale(80),
y:yscale(0),
dy:50,
“文本锚定”:“中间”,
类别:“textlabel”
.text(“市场数量”)
风格
“字体大小”:“60%”
#Xaxis公司标签
xFirmlabel=canvas.append('svg:text')
艾特先生
x:firmXscale(80),
y:yscale(0),
dy:50,
“文本锚定”:“中间”,
类别:“textlabel”
.text(“固定数量”)
风格
"translate_tabs_to_spaces": true,
plotAC = (fc,c,d) ->
    acData = (ac(fc, c, d, q) for q in quantities)
    qACpairs = d3.zip(quantities, acData)
    qACpairs = (item for item in qACpairs when item[1] < 12)
    drawAC = canvas.append('svg:path')
    .attr({
        d: createsvgpath(firmXscale)(qACpairs),
        stroke: 'steelblue'
    })
    return