Beispiel #1
0
        LuaArguments ipairs(LuaArguments args)
        {
            LuaObject handler = LuaEvents.getMetamethod(args[0], "__ipairs");

            if (!handler.IsNil)
            {
                return(handler.Call(args));
            }
            else
            {
                if (args[0].IsTable)
                {
                    LuaFunction f = delegate(LuaArguments x)
                    {
                        var s   = x[0];
                        var var = x[1].AsNumber() + 1;

                        var val = s[var];
                        if (val == LuaObject.Nil)
                        {
                            return(Return(LuaObject.Nil));
                        }
                        else
                        {
                            return(Return(var, val));
                        }
                    };
                    return(Return(f, args[0], 0));
                }
                else
                {
                    throw new LuaException("t must be a table");
                }
            }
        }
Beispiel #2
0
        LuaArguments pairs(LuaArguments args)
        {
            LuaObject handler = LuaEvents.getMetamethod(args[0], "__pairs");

            if (!handler.IsNil)
            {
                return(handler.Call(args));
            }
            else
            {
                return(Return((LuaFunction)next, args[0], LuaObject.Nil));
            }
        }