コード例 #1
0
        /// <summary>
        /// Call a function by passing in all the values.
        /// </summary>
        /// <param name="functionName">The name of the function to call.</param>
        /// <param name="paramListExpressions">List of parameters as expressions to evaluate first to actual values</param>
        /// <param name="paramVals">List to store the resolved paramter expressions. ( these will be resolved if paramListExpressions is supplied and resolveParams is true. If
        /// resolveParams is false, the list is assumed to have the values for the paramters to the function.</param>
        /// <param name="resolveParams">Whether or not to resolve the list of parameter expression objects</param>
        /// <returns></returns>
        public object CallByName(string functionName, List <Expr> paramListExpressions, List <object> paramVals, bool resolveParams)
        {
            var function  = GetByName(functionName);
            var hasParams = paramListExpressions != null && paramListExpressions.Count > 0;

            // 1. Resolve parameters if necessary
            if (resolveParams && function != null && (function.HasArguments || hasParams))
            {
                ParamHelper.ResolveParametersForScriptFunction(function.Meta, paramListExpressions, paramVals);
            }
            function.ArgumentValues = paramVals;
            function.Evaluate();
            object result = null;

            if (function.HasReturnValue)
            {
                result = function.ReturnValue;
            }
            else
            {
                result = LObjects.Null;
            }
            return(result);
        }
コード例 #2
0
 /// <summary>
 /// Resolves the parameters.
 /// </summary>
 protected void ResolveParams()
 {
     ParamHelper.ResolveParametersForScriptFunction(_fmeta, this.ParamListExpressions, this.ParamList);
 }