Coffeescript 树扩展 class 不工作

Coffeescript tree extends class not working

我需要创建一棵树,例如计算 2 个数字。我在咖啡脚本中做,由于扩展 class.

而转换 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 方法允许执行操作。 Link to example.

我用抽象 类 创建语法树。在 python 工作非常好:

class Expression:
    def Evaluate(self):
        return 0;

class Const(Expression):
    def __init__(self, nValue):
        self.Value = nValue;

    def Evaluate(self):
        return self.Value;

class BinaryOperation(Expression):
    def __init__(self, nL, nR):
        self.L = nL;
        self.R = nR;

class Add(BinaryOperation):

    def Evaluate(self):
        return self.L.Evaluate() + self.R.Evaluate();