public object Call(Interpreter interpreter, Token token, List <object> arguments) { ScriptFunction callback = (ScriptFunction)arguments[0]; if (callback.Arity() != 1) { throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 1, found " + callback.Arity() + ")"); } foreach (object element in self.container) { callback.Call(interpreter, token, new List <object>() { element }); } return(null); }
public object Call(Interpreter interpreter, Token token, List arguments) { ScriptFunction callback = (ScriptFunction)arguments[0]; if (callback.Arity() != 2) { throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 2, found " + callback.Arity() + ")"); } foreach (Pair kvp in self.container) { callback.Call(interpreter, token, new List() { kvp.Key, kvp.Value }); } return(null); }
public object Call(Interpreter interpreter, Token token, List <object> arguments) { ScriptFunction callback = (ScriptFunction)arguments[0]; List <object> resultsContainer = new List <object>(); if (callback.Arity() != 1) { throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 1, found " + callback.Arity() + ")"); } foreach (object element in self.container) { object result = callback.Call(interpreter, token, new List <object>() { element }); if (interpreter.CheckIsTruthy(result)) { resultsContainer.Add(element); } } return(new ArrayInstance(resultsContainer)); }
public object Call(Interpreter interpreter, Token token, List arguments) { ScriptFunction callback = (ScriptFunction)arguments[0]; Dict resultsContainer = new Dict(); if (callback.Arity() != 2) { throw new ErrorHandler.RuntimeError(token, "Callback has an incorrect number of parameters (expected 2, found " + callback.Arity() + ")"); } foreach (Pair kvp in self.container) { object result = callback.Call(interpreter, token, new List() { kvp.Key, kvp.Value }); if (interpreter.CheckIsTruthy(result)) { resultsContainer[kvp.Key] = kvp.Value; } } return(new DictionaryInstance(resultsContainer)); }