SetValue() public method

public SetValue ( object key, ScriptObject value ) : void
key object
value ScriptObject
return void
Example #1
0
 public void SetValue(string key, ScriptValue value)
 {
     if (valueType == scriptValueType)
     {
         scriptValue.SetValue(key, value);
     }
     else
     {
         throw new ExecutionException($"类型[{ValueTypeName}]不支持设置变量 String : [{key}]");
     }
 }
Example #2
0
        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);
                        }
                    }
                }
            }
        }