我需要创建一个树,例如计算2个数字。我在咖啡脚本中做,由于扩展类,他们会转换javascript。
class Expression
@Evaluate = -> 0
class Const extends Expression
constructor: (value)->
class BinaryOperation extends Expression
constructor: (L, R)->
class Add extends BinaryOperation
@Evaluate = -> L.Evaluate() + R.Evaluate();
expr = new Add(new Const(10), new Const(10));
alert(expr.Evaluate())
演示:https : //jsfiddle.net/f3ry/D9kBP/24/谢谢。
您的问题是语法错误和对子类的工作方式的误解的结合。这应该使您到达那里:
class Expression
Evaluate: () -> 0
class Const extends Expression
constructor: (@value) ->
Evaluate: () -> @value
class BinaryOperation extends Expression
constructor: (@L, @R)->
class Add extends BinaryOperation
Evaluate: -> @L.Evaluate() + @R.Evaluate();
expr = new Add(new Const(10), new Const(10));
alert(expr.Evaluate())
@
在构造函数参数中添加,将其设置为新创建对象的属性。覆盖该Evaluate
方法允许执行操作。链接到示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句