Call() public méthode

public Call ( ) : object
Résultat object
        public override ScriptObject GetValue(object key)
        {
            if (this.metaTable == null)
            {
                return(m_listObject.ContainsKey(key) ? m_listObject[key] : m_Script.Null);
            }
            else
            {
                if (m_listObject.ContainsKey(key))
                {
                    return(m_listObject[key]);
                }

                ScriptObject idx_obj = this.metaTable.GetValue(ScorpioMetaMethod.INDEX);
                if (idx_obj == null)
                {
                    return(m_Script.Null);
                }

                if (idx_obj.IsFunction)
                {
                    ScriptObject[] paramsArr = { this, m_Script.CreateObject(key) };
                    return(m_Script.CreateObject(idx_obj.Call(paramsArr)));
                }
                else if (idx_obj.IsTable)
                {
                    return(idx_obj.GetValue(key));
                }
                else
                {
                    return(m_Script.Null);
                }
            }
        }
Exemple #2
0
        public object Call(String strName, ScriptObject[] args)
        {
            ScriptObject obj = m_GlobalTable.GetValue(strName);

            if (obj is ScriptNull)
            {
                throw new ScriptException("找不到变量[" + strName + "]");
            }
            m_StackInfoStack.Clear();
            return(obj.Call(args));
        }
Exemple #3
0
 //调用函数
 public ScriptValue Call(ScriptValue thisObject, ScriptValue[] parameters, int length)
 {
     if (valueType == scriptValueType)
     {
         return(scriptValue.Call(thisObject, parameters, length));
     }
     else
     {
         throw new ExecutionException($"类型[{ValueTypeName}]不支持函数调用");
     }
 }
Exemple #4
0
        public object Call(String strName, params object[] args)
        {
            ScriptObject obj = m_GlobalTable.GetValue(strName);

            if (obj is ScriptNull)
            {
                throw new ScriptException("找不到变量[" + strName + "]");
            }
            int length = args.Length;

            ScriptObject[] parameters = new ScriptObject[length];
            for (int i = 0; i < length; ++i)
            {
                parameters[i] = CreateObject(args[i]);
            }
            m_StackInfoStack.Clear();
            return(obj.Call(parameters));
        }
        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);
                        }
                    }
                }
            }
        }