コード例 #1
0
ファイル: ScriptEngine.cs プロジェクト: wuyou331/CoreScript
        /// <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);
            }
        }
コード例 #2
0
 public ScriptFunction(TokenFunctionDefine token, ScriptEngine context)
 {
     _token    = token;
     this.Name = _token.Name;
 }