Пример #1
0
        public static void While(Pseudocode Pseudocode, string funcName, Action <object> callback, object[] parameters)
        {
            if (parameters[0] is bool)
            {
                throw new Exception("定义While方法的条件参数,需要使用方法: NewFunc(表达式)");
            }
            PseudocodeFunc   isTruePseudocodeFunc = (PseudocodeFunc)parameters[0];
            PseudocodeAction LoopDoSth            = (PseudocodeAction)parameters[1];

            Pseudocode.Run(isTruePseudocodeFunc, () =>
            {
                if ((bool)isTruePseudocodeFunc.result)
                {
                    if (LoopDoSth != null)
                    {
                        Pseudocode.RunQueue(Pseudocode.GetFuncParamFuncsQueue(LoopDoSth.funcs),
                                            () => { While(Pseudocode, funcName, callback, parameters); });
                    }
                    else
                    {
                        callback?.Invoke(null);
                    }
                }
                else
                {
                    callback?.Invoke(null);
                }
            });
        }
Пример #2
0
        public static void IF(Pseudocode Pseudocode, string funcName, Action <object> callback, object[] parameters, object[] commonParameters)
        {
            if (parameters[0] is bool)
            {
                throw new Exception("定义IF方法的条件参数,需要使用方法: NewFunc(表达式)");
            }
            PseudocodeFunc   isTruePseudocodeFunc = (PseudocodeFunc)parameters[0];
            PseudocodeAction TrueDoSth            = (PseudocodeAction)parameters[1];
            PseudocodeAction FalseDoSth           = (PseudocodeAction)parameters[2];

            Pseudocode.Run(isTruePseudocodeFunc, () =>
            {
                if ((bool)isTruePseudocodeFunc.result)
                {
                    if (TrueDoSth != null)
                    {
                        Pseudocode.RunQueue(Pseudocode.GetFuncParamFuncsQueue(TrueDoSth.funcs),
                                            () => { callback?.Invoke(null); }, commonParameters);
                    }
                    else
                    {
                        callback?.Invoke(null);
                    }
                }
                else
                {
                    if (FalseDoSth != null)
                    {
                        Pseudocode.RunQueue(Pseudocode.GetFuncParamFuncsQueue(FalseDoSth.funcs),
                                            () => { callback?.Invoke(null); }, commonParameters);
                    }
                    else
                    {
                        callback?.Invoke(null);
                    }
                }
            });
        }