gpt4 book ai didi

lua - 如何在c中获取lua表的表长度?

转载 作者:行者123 更新时间:2023-12-04 17:37:52 30 4
gpt4 key购买 nike

我有一个从 lua 调用的 c 函数。第一个参数是一个表。该表被滥用为底层 api 的数字输入数组。所以现在我的代码是这样的:

int n = 0;
lua_pushnil ( L );
while ( lua_next ( L, 2 ) ) {
n++;
lua_pop ( L, 1 );
}
int *flat = alloca ( n * 4 );
lua_pushnil ( L );
int i = 0;
while ( lua_next(L,2) ) {
flat[i++] = (int)lua_tonumber( L, -1 );
lua_pop ( L, 1 );
}

代码是盲打的,有错误请见谅。也没有错误检查。但问题是我必须执行两次 while 循环。有没有简单的方法可以避免这种情况?我想针对输入良好的情况进行优化 - 一个整数表。

最佳答案

您正在寻找的函数不直观,名为 lua_objlen ,或在 Lua 5.2 中,lua_len (如果您希望避免元方法调用,可以使用 lua_rawlen)。它有很多作用(尽管有些作用,比如字符串的长度,当你只使用 lua_tolstring 来获取字符串和它的长度时并不是很有用),所以你应该熟悉它。

关于lua - 如何在c中获取lua表的表长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617191/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com