lua - 将值存储在 lua 的 userdata 对象中

标签 lua

我想做的是:

object.foo = "bar"

print(object.foo)

其中“对象”是用户数据。

我已经用谷歌搜索了一段时间(使用关键字 __newindex 和 lua_rawset),但我找不到任何可以实现我想要的功能的示例。

我想用c++中的lua api来做到这一点

最佳答案

让我们用 Lua 代码编写它,以便我们可以用代码快速进行实验

function create_object()
  -- ## Create new userdatum with a metatable
  local obj = newproxy(true)
  local store = {}
  getmetatable(obj).__index = store
  getmetatable(obj).__newindex = store
  return obj
end

ud = create_object()
ud.a = 10
print(ud.a)
-- prints '10'

如果您使用用户数据,您可能希望使用 C API 执行上述操作。然而 Lua 代码应该清楚地说明哪些步骤是必要的。 (newproxy(..) 函数只是从 Lua 创建一个虚拟用户数据。)

关于lua - 将值存储在 lua 的 userdata 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541839/

相关文章:

iphone - 使用 iOS5 的 XCode 编译现有的 Lua 应用程序

for-loop - Lua - 为什么不动态计算for循环限制?

Lua string.match 提取 HTML 的一些值

java - LuaJ(Java Lua库): Calling Lua functions in other files from a Lua file

c - 编译 Lua 时未解析的外部符号 _LoadLibraryExA

redis - 如何找到 Redis 主题(键的子集)的大小?

lua - 如何将可变参数传递给 lua 文件?

lua - 如何在 Lua 中以格式化字符串的形式获取本地时间

c++ - 如何将自定义模块加载到 Lua 中?

lua - 我如何才能在 Awesome wm 3.5 版中只有任务列表中的应用程序图标?