Javascript Coffeescript添加了一个return语句,在本地使用时我不需要它;可能是一个崇高的文本2问题
当我在上使用“Try coffeescript”时,下面的coffeescript编译成精细的javascript 页然而,在我的电脑上,我得到了我不想要的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
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