问题标签 [lua-userdata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
618 浏览

lua - Lua:在元表中扩展用户数据

我正在尝试为一些受保护的员工 userData 找到合适的解决方案,我想用其他条目/数据进行扩展以便于访问

这是我正在尝试做的一个粗略示例:
这可行,但我不喜欢我必须将所有自定义逻辑放在索引函数中

以及我如何访问自定义数据:

理想情况下,我想将自定义逻辑放在一个单独的函数中,如下例所示:
这不起作用,也不能传递参数(返回 nil)...

我怎么解决这个问题?有更好的解决方案吗?

0 投票
1 回答
69 浏览

c++ - What happens if I push userdata twice using the same key?

I would like to know what happens if I push the lightuserdata into the registry twice using the same key.

My Code:

Would the previously pushed pointer (x) be replaced with the new one (y)?

ADDED: And is there a way to check the list of keys that are currently registered?

0 投票
1 回答
67 浏览

lua - Lua 用户数据不可用

我有一些相对简单的 Lua 代码,它链接到一些 C 和一些 Lua。

这正如我所期望的那样工作。当我按空格键时,屏幕上的消息会发生变化,直到它运行到数组的末尾。这些zenith.方法都是用 C 实现的,使用 Userdata 来存储颜色(我有多种构造颜色的方法(rgba、hsl、命名,所以传递它而不使用数字参数是有意义的)

然后我尝试改变结构,如下所示:

唯一的变化是我已将颜色(即用户数据)提取到最外层范围。我希望这能够继续工作,但没有不断分配/收集颜色。相反,我只是得到一个黑屏。有小费吗?我的颜色是否过早地被垃圾收集,因为它们仅在关闭时可用?我还错过了什么其他魔法吗?颜色和颜色之间的唯一区别messages是它们是用户数据。

0 投票
1 回答
567 浏览

c++ - 如何索引转换后的用户数据值?

我尝试使用将 C++ 类转换为 void 指针lua_touserdata(),然后使用lua_pushlightuserdata().

但是,一旦进行转换,我就无法在类中索引变量。

这是我的测试代码:

MyBindings.h

MyBindings.i

main.cpp

我得到的结果:

[string "local vec = my.Vec2(3, 4)..."]:3: 尝试索引用户数据值 (local 'p')

我期望的结果:

3

我应该怎么做才能得到我期望的结果?

0 投票
2 回答
1170 浏览

c++ - 如何在 C++ 中将用户数据从一个 Lua 块传递到另一个块

我试图userdata从 C++ 中的 Lua 脚本(chunk A)获取(通过我的示例中的函数返回的变量),然后,稍后将其从 C++(通过我的示例中的函数参数)传递userdata回 Lua 脚本(chunk B),所以userdata可以chunk B像在chunk A.

MyBindings.h

MyBindings.i

main.cpp

我得到的结果:

[string "local vec2 = my.Vec2(3, 4)..."]:6: 尝试索引用户数据值 (local 'p')

我期望的结果:

3

是否可以从中获取userdata然后chunk A将其传递给chunk B以便可以像以前一样使用它chunk A

0 投票
1 回答
475 浏览

c++ - 使用 luaL_ref 获取对表中用户数据的引用?

首先,我很抱歉没有上传完整的代码。

我正在尝试转换userdata为 apointer以便可以使用lua_rawgeti().

如果你看到outletRet()function,它会检查返回值的类型,如果是 a userdata,它会通过调用将指针传递给其他 lua 块outlet_pointer(),它似乎工作正常。

如果userdata在 a 内tableoutletTable()则调用函数。如果其中一个元素是 auserdata它也会转换userdata为 apointer然后通过调用将其传递给其他块outlet_pointer()

但是,当luaL_ref(L, LUA_REGISTRYINDEX)被调用时,它似乎获得了对整体的引用,table而不仅仅是userdata在其中。

我怎样才能获得对userdata而不是整体的参考table

0 投票
1 回答
763 浏览

go - 将 Go Struct 实例转换为 Lua 表

我有一个 Go Struct 实例,并希望使用 GopherLua 将该实例传递给 Lua 方法。

我的 Go 代码是这样的:

在我的 Lua 方法中,访问 Animal 参数的属性会尝试索引非表对象时出错。我的 Lua 是这样的:

请问我做错了什么?传递其他类型(字符串,int)的参数可以正常工作。

0 投票
0 回答
92 浏览

lua - lua - 检查用户数据是否为零

我尝试使用 lua cjson 解析为以下 json :

它被解析为以下地图:

我试图做类似的事情:

那可能吗?

(userdata(nil) 不是有效的表达式)

0 投票
1 回答
622 浏览

lua - 尝试调用用户数据值

所以当玩家触摸它时,我试图让一个部分消失,但它说:Workspace.RedCastle.Grid.Script:1: attempt to call a userdata value

这是我的代码:

我怎样才能解决这个问题?

0 投票
1 回答
818 浏览

lua - 在 Wireshark Dissector 中将用户数据转换为十六进制

我现在正在编写 Wireshark Dissector lua 脚本。

如何转换userdata为十六进制字符串?
我想得到这样的输出0102030405060708000a0b0c0d0e0f10

我可以使用tostring.
但它省略了长数据。 输出图像

如何在userdata不省略长数据的情况下转换为十六进制字符串?

环境

  • Wireshark 3.2.1