【发布时间】:2021-12-31 20:23:45
【问题描述】:
为什么我在 e 上调用 eval_prog 时返回错误,但它在 @e
上正常工作class Let < GeometryExpression
def initialize(s,e1,e2)
@s = s
@e1 = e1
@e2 = e2
end
def preprocess_prog
Let.new(@s, @e1.preprocess_prog, @e2.preprocess_prog)
end
def eval_prog env
@e2.eval_prog([@s, @e1.eval_prog(env)] + env)
end
end
【问题讨论】:
-
这不是minimal reproducible example。请提供重现您的问题所需的所有代码。
-
e是一个局部变量,它的生命周期与方法一样长。@e是附加到 Let 对象本身的实例变量。见Read This If You Want To Understand Instance Variables In Ruby。