public void SetValue(string key, ScriptValue value) { if (valueType == scriptValueType) { scriptValue.SetValue(key, value); } else { throw new ExecutionException($"类型[{ValueTypeName}]不支持设置变量 String : [{key}]"); } }
public override void SetValue(object key, ScriptObject value) { if (value is ScriptNull) { m_listObject.Remove(key); } else { if (this.metaTable == null) { m_listObject[key] = value.Assign(); } else { if (m_listObject.ContainsKey(key)) { m_listObject[key] = value.Assign(); } else { ScriptObject idx_obj = this.metaTable.GetValue(ScorpioMetaMethod.NEWINDEX); if (idx_obj == null) { m_listObject[key] = value.Assign(); return; } if (idx_obj.IsFunction) { ScriptObject[] paramsArr = { this, m_Script.CreateObject(key), value }; m_Script.CreateObject(idx_obj.Call(paramsArr)); } else if (idx_obj.IsTable) { idx_obj.SetValue(key, value); } } } } }