/// <summary> /// 执行自定义方法 /// </summary> /// <param name="token"></param> /// <param name="args"></param> /// <returns></returns> private ScriptValue ExcuteFunction(TokenFunctionDefine token, IList <ScriptValue> args = null) { if ((args?.Count ?? 0) != token.Parameters.Variables.Count) { throw new Exception("函数调用缺少参数"); } var index = 0; try { //方法参数入栈 foreach (var variableDefine in token.Parameters.Variables) { var svar = args[index]; _stack.Push(variableDefine.Variable, svar); index++; } return(ExcuteBlock(token.CodeBlock)); } finally { _stack.Pop(index); } }
public ScriptFunction(TokenFunctionDefine token, ScriptEngine context) { _token = token; this.Name = _token.Name; }