コード例 #1
0
        public object Execute(VariableContext context = null)
        {
            var namedList = CartesianProductHelper.BuildNamedVariableList(_iterationExprs, context);

            if (context == null)
            {
                context = new VariableContext();
            }

            var dictInput = new Dictionary <string, Variable> ();

            foreach (var varList in CartesianProductHelper.IterateDynamicLoop(namedList))
            {
                dictInput.Clear();
                foreach (var item in varList)
                {
                    dictInput.Add(item.Item1, item.Item2);
                }
                foreach (var item in dictInput)
                {
                    if (!context.InputNameDict.TryAdd(item.Key, item.Value))
                    {
                        context.InputNameDict[item.Key] = item.Value;
                    }
                }

                bool sB = (Variable)_satisfyExpr.Execute(context);

                if ("some" == _operation && sB)
                {
                    return(new Variable(true));
                }

                if ("every" == _operation && !sB)
                {
                    return(new Variable(false));
                }
            }

            if ("every" == _operation)
            {
                return(new Variable(true));
            }

            return(new Variable(false));
        }
コード例 #2
0
        public object Execute(VariableContext context = null)
        {
            var namedList = CartesianProductHelper.BuildNamedVariableList(_iterationExprs, context);

            if (context == null)
            {
                context = new VariableContext();
            }

            var rsltLst = new List <Variable> ();

            var dictInput = new Dictionary <string, Variable> ();

            foreach (var varList in CartesianProductHelper.IterateDynamicLoop(namedList))
            {
                dictInput.Clear();
                foreach (var item in varList)
                {
                    dictInput.Add(item.Item1, item.Item2);
                }
                foreach (var item in dictInput)
                {
                    if (!context.InputNameDict.TryAdd(item.Key, item.Value))
                    {
                        context.InputNameDict[item.Key] = item.Value;
                    }
                }

                var rslt = (Variable)_returnExpr.Execute(context);
                rsltLst.Add(rslt);
                if (!context.InputNameDict.TryAdd("__CpL__", rsltLst))
                {
                    context.InputNameDict["__CpL__"] = rsltLst;
                }
            }

            return(new Variable(rsltLst));
        }