从 Lua 设置 C 属性
Setting C properties from Lua
我在 C 中有一些值,我想从 Lua 更新,我已经编写了自己的绑定函数,但我想知道是否有可能。
我希望能够做到这一点
myNamespace.myValue = 10
并让它做与此相同的事情
myNamespace.setMyValue(10)
可能?只是好奇。直接分配/读取值而不是调用 get/set 函数更干净。Lua 可以做这样的自动翻译吗?
这当然是可能的。可以重载 __newindex
元方法以将 myValue 转换为 setMyValue
,然后在表上调用它。举个例子:
local meta = {
__newindex = function(t, key, value)
local setterName = "set" .. key:sub(0, 1):upper() .. key:sub(2)
local setter = t[setterName]
if setter == nil then
error("Setter " .. setterName .. " does not exist on table")
end
return setter(t, value)
end
}
local table = {
setMyValue = function(self, v)
print("Set value to " .. tostring(v))
end
}
setmetatable(table, meta)
table.myValue = "Hello"
这将打印"将值设置为"你好"。
您可能希望重载__index以执行相同的操作,但也要使用getMyValue
。
相关文章:
- C++ 命名参数习惯用语 - 未设置字符串属性
- 如何将字符串属性设置为 QTreeWidgetItem?
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 是否可以在单独的线程中将 QObject 设置为 QML 上下文属性?
- CMake 设置使用不正确的参数数调用的目标属性
- 如何使用C++获取/设置OBS中的垂直滚动过滤器属性?
- 设置使用 Cereal 序列化库时可以在序列化函数中访问的属性
- 设置类的 char* 属性
- 创建新对象并立即为其设置属性时出现编译器错误
- boost::log 设置"Channel"通道记录器中的属性
- property_tree:无法设置默认属性值
- 将 QObject* 设置为 QMLEngine 根上下文属性
- 设置文件属性成功,但检索其失败
- 如何将项目属性设置为删除警告MSB8004:中间目录不会以落后的斜线结束
- 如何根据道具名称动态设置对象的属性?
- 重载>>运算符未在输入上设置属性
- 如何将按钮的属性设置为从Qt中的小部件可见
- 将公共属性设置为私有属性
- 使用 boost.accumulators 对将特定属性设置为值的对象进行计数
- 如何将成员属性设置为QGraphicsItem的工具提示?