将嵌套表从Lua传递到C

Passing nested tables from Lua to C

本文关键字:Lua 嵌套      更新时间:2023-10-16

我用Lua定义了以下嵌套表。我需要将它传递到我的c++程序中,以便我可以准确地读取它的值。我知道我可以使用

将单个表传递给Lua
lua_getglobal(L, "parameters") 

函数。但在这种情况下,由于它是嵌套的,我该如何处理它呢?

parameters = 
{ 
     fuel = 100,         
     damage = 250,
     maxspeed = 250,
     levels = 
     {
         { 
             fuel = 200,
             damage = 600, 
             maxspeed = 300,                 
         },
         { 
             fuel = 300,
             damage = 750,
             maxspeed = 400, 
         },                    
     }
}

lua_getglobal将像任何其他变量一样为"parameters"工作。您将收到位于堆栈顶部的表。在那里,您可以使用lua_gettable(), lua_getfield()lua_rawget*()函数来访问它的字段。表是嵌套的这一事实对访问表没有任何影响。要访问子表,使用这些函数将其压入堆栈,并以与其"父"表相同的方式访问它。