【问题标题】:What should a C function called from Lua that pushes a table return?从 Lua 调用的推送表的 C 函数应该返回什么?
【发布时间】:2013-05-29 23:49:04
【问题描述】:

当编写一个将表压入堆栈作为返回值给 Lua 调用者的 C 函数时,它应该在 C 上下文中返回什么?我知道您应该返回要传递回 Lua 调用者的值的数量,但是对于表,表引用是 1,还是需要考虑表的内容?

我正在使用的表传回方法见“Pushing a Lua Table.

【问题讨论】:

  • 我是在没有任何 lua 经验的情况下这么说的;但是阅读此内容:lua-users.org/wiki/TablesTutorial 似乎 lua 表是通过引用传递的;所以我猜答案是 1 ;因为你只是在传递参考

标签: c lua lua-table


【解决方案1】:

你只是直接返回一个 lua 值,所以你的 C 函数应该返回 1。

类似这样的:

int my_table( luaState * L) {
  lua_newtable(L);
  lua_pushstring(L, "a_key");
  lua_pushstring(L, "a_value");
  lua_settable(L, -3);
  return 1;
}

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 2013-07-14
    • 2017-01-07
    • 2018-09-16
    • 2018-09-03
    • 2013-03-28
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多