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())
您的问题是语法错误和对子类化工作方式的误解的结合。这应该会让你到达那里:
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();
我需要创建一棵树,例如计算 2 个数字。我在咖啡脚本中做,由于扩展 class.
而转换 javascriptclass 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())
您的问题是语法错误和对子类化工作方式的误解的结合。这应该会让你到达那里:
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();