public LoxFunction Bind(LoxInstance instance) { VariableEnvironment environment = new VariableEnvironment(closure); environment.Define("this", instance); return(new LoxFunction(declaration, environment, isInitializer)); }
public object Call(Interpreter interpreter, List <object> arguments) { LoxInstance instance = new LoxInstance(this); LoxFunction initializer = FindMethod("init"); if (initializer != null) { initializer.bind(instance).call(intepreter, arguments); } if (isInitializer) { return closure.getAt(0, "this") } return(instance); }