private void Initialize(string name, ScriptObject obj) { m_variableDictionary.Add(name, obj); } //初始化所有数据 每次调用 Execute 调用
void ProcessCallFor() { CodeFor code = (CodeFor)m_scriptInstruction.Operand0; ScriptContext context = code.Context; ScriptContext blockContext = code.BlockContext; context.Initialize(this); context.Execute(code.BeginExecutable); ScriptBoolean Condition; for ( ; ;) { if (code.Condition != null) { Condition = context.ResolveOperand(code.Condition) as ScriptBoolean; if (Condition == null) { throw new ExecutionException("for 跳出条件必须是一个bool型"); } if (!Condition.Value) { break; } } blockContext.Initialize(context); blockContext.Execute(); if (blockContext.IsBreak) { break; } context.Execute(code.LoopExecutable); } }