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); } }); }
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); } } }); }