【问题标题】:Lua table of string values as parameter in C functionLua字符串值表作为C函数中的参数
【发布时间】:2015-05-15 06:17:36
【问题描述】:

我想制作一个 C 函数,它以带有字符串的 lua 表作为参数,而 lua 表没有任何键,只有值。我怎样才能做到这一点?我想不明白。我在谷歌搜索时没有找到任何东西。

【问题讨论】:

  • 你看过《Lua 编程》这本书吗?尤其是第24章
  • @hjpotter92 不行,我明天去看看,谢谢建议
  • 你知道表在 Lua 中是如何工作的吗? (提示:它们包含键/值对,没有没有值的键或没有键的值)
  • @immibis 但是当你不指定时他们有一个默认键,不是自己指定一个吗?
  • @ErikW 默认键是从 1 开始的连续整数。

标签: c arrays lua lua-table lua-api


【解决方案1】:

表中的“默认”键是从 1 开始的连续整数。这个:

{"hello", "world"}

等同于:

{[1] = "hello", [2] = "world"}

您不能使用lua_getfield 访问这些条目,因为它需要一个字符串键。您可以使用lua_pushnumberlua_gettable 以“手动”方式进行操作。如果L 是您的lua_State*t 是堆栈上的表的索引并且k 是键,那么:

lua_pushnumber(L, k);
lua_gettable(L, t);

应该做同样的事情:

lua_getfield(L, t, k);

用于字符串键。请注意,如果t 是一个相对索引(负数),那么由于您将另一个项目推入堆栈,您需要将其调整为 1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多