protected override ScriptVariable CalculateInternal(ScriptExecutionEnvironment env) { ScriptVariable value = null; if (this.InitialValue != null) { value = this.InitialValue.Calculate(env); } env.Variables.Declare(this.Identifier, value, this.Property); return(value == null ? null : value.Clone()); }
protected override ScriptVariable CalculateInternal(ScriptExecutionEnvironment env) { ScriptVariable value = null; if (this.RightValue != null) { value = this.RightValue.Calculate(env); } IVariableAccessor access = this.Accessor.GetAccessor(env); if (this.Operator == OperatorType.Substitute) { access.Set(env, value == null ? null : value.Clone()); return(value); } else { ScriptVariable leftValue = access.Get(env); ScriptVariable returnValue = operate(leftValue, value, this.Operator); access.Set(env, returnValue); return(returnValue); } }