如何在C中从lua访问多维表?
你好,我真的被这个看似简单的任务难住了。 我可以访问传递给C中函数的表的属性,但不能访问在其中创建的任何子表的成员 基本上,我希望能够从属性表中提取字符串,以便根据用户的期望创建一个“轮子” 这是我到目前为止所做的(尝试了这么多,我的大脑都快崩溃了) 卢阿方面:如何在C中从lua访问多维表?,c,lua,luac,C,Lua,Luac,你好,我真的被这个看似简单的任务难住了。 我可以访问传递给C中函数的表的属性,但不能访问在其中创建的任何子表的成员 基本上,我希望能够从属性表中提取字符串,以便根据用户的期望创建一个“轮子” 这是我到目前为止所做的(尝试了这么多,我的大脑都快崩溃了) 卢阿方面: --Function createSomething( "wheel", { canInflate = true, properties = { "large", "full" } } ) 丙方: //I can retrieve a
--Function
createSomething( "wheel", { canInflate = true, properties = { "large", "full" } } )
丙方:
//I can retrieve any value easily within that table, but cannot seem to extract the table
//Within it named "properties", i can access the table, but cannot extract the strings inside
if( lua_istable(L, 2) ) {
lua_getfield(L, 2, "canInflate"); // Let's extract the value for the key 'someKey'. Pushes the value on the top of the stack
static int canInflate = lua_toboolean(L, -1); // get the value of bool now at the top of stack (index: -1)
//printf("can inflate is %d\n", canInflate);
//lua_pop(L, 1); // pop the value now that we are done with it
}
//try to get the properties table
if ( lua_istable(L, 2) ) {
lua_getfield(L, 2, "properties");
const char *str = lua_tostring(L, -1);
printf( "properties 1 = %s\n", str); // NULL
lua_pop(L, 2);
}
如果您能在这方面提供帮助,我们将不胜感激。您遇到的问题是如何在Lua中指定表:以下3条语句的结果完全相同:
t = { 'full','large'}
t = { [1] = 'full', [2] = 'large'}
t={};t[1]='full';t[2]='large'
您想要的是将字符串用作键而不是值(正如在代码和上述示例中所做的那样):
如果您使用字符串作为键,您的C代码应该可以工作。确实可以,非常感谢!我知道这很重要simple@Dan:如果解决了您的问题,请接受此答案。左边是绿色的复选标记。
t={full=true,large=true}
-- or
t={}; t.full=true; t.large=true