/// <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); }
/// <summary> /// Resolves the parameters. /// </summary> protected void ResolveParams() { ParamHelper.ResolveParametersForScriptFunction(_fmeta, this.ParamListExpressions, this.ParamList); }