问题标签 [lua-table]

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 投票
2 回答
11545 浏览

c++ - 如何在 C++ 中创建 Lua 表,并将其传递给 Lua 函数?

在 C++ 中,我有一个map<string, string>, 包含未知数量的条目。如何将它传递给 Lua 函数,以便 Lua 函数可以将数据用作表?

0 投票
3 回答
33346 浏览

lua - 如何在 Lua 中快速初始化关联表?

在 Lua 中,您可以通过以下方式创建表:

但是,我想创建一个关联表,我必须这样做:

以下给出了一个错误:

有没有办法类似于我的第一个代码片段?

0 投票
15 回答
81463 浏览

lua - 如何按值复制 Lua 表?

最近我写了一些 Lua 代码,比如:

显然,这不是我想要做的,因为变量包含对匿名表的引用,而不是 Lua 中表本身的值。这在Programming in Lua中有明确规定,但我忘记了。

所以问题是我应该写什么而不是copy = a获取值的副本a

0 投票
12 回答
132292 浏览

list - 在 Lua 列表中搜索项目

如果我有这样的项目列表:

如何检查“橙色”是否在此列表中?

在 Python 中,我可以这样做:

Lua中是否有等价物?

0 投票
2 回答
3295 浏览

memory-management - Lua 垃圾回收表,嵌套表

[我已经阅读了 Lua 手册,但它没有提供可靠的答案。]

假设我有一个 Lua 表,充当索引数组:

我如何最好地处置这张桌子?我只是将 myArray 设置为 nil 吗?还是我必须遍历数组并将每个索引元素设置为零?

同样,假设我有一个 Lua 表,充当字典:

我可以将'myDictionary'设置为零,还是必须遍历?

最后,在内存管理方面,我在哪里嵌套了表,我该怎么办?例如

我是否需要遍历每个子表,将它们设置为 nil?谢谢你的帮助。

0 投票
8 回答
89446 浏览

lua - 确定 Lua 表是否为空(不包含条目)的最有效方法?

确定表是否为空(即当前既不包含数组样式值也不包含字典样式值)的最有效方法是什么?

目前,我正在使用next()

有没有更有效的方法?

注意:#运算符在这里不够用,因为它仅对表中的数组样式值进行操作 - 因此与两者都返回 0#{test=2}无法区分。#{}另请注意,检查表变量是否nil不够,因为我不是在寻找nil 值,而是具有 0 个条目的表(即{})。

0 投票
9 回答
75177 浏览

merge - 如何合并两个表,覆盖两者中的元素?

我需要合并两个表,如果给定项目在两个表中,则第二个表的内容会覆盖第一个表中的内容。我看了,但标准库似乎没有提供这个。我在哪里可以获得这样的功能?

0 投票
11 回答
72013 浏览

lua - Lua中的表连接

原帖

鉴于 Lua 中没有内置函数,我正在寻找一个允许我将表附加在一起的函数。我用谷歌搜索了很多,并尝试了我偶然发现的所有解决方案,但似乎没有一个能正常工作。

场景是这样的:我正在使用嵌入在应用程序中的 Lua。应用程序的内部命令以表格的形式返回值列表。

我要做的是在循环中递归地调用该命令,并将返回的值(再次以表的形式)附加到先前迭代的表中。


编辑

对于将来遇到此帖子的人,请注意@gimf 发布的内容。由于 Lua 中的表比其他任何东西都更像数组(即使在列表上下文中),所以没有真正正确的方法可以将一个表附加到另一个表。最接近的概念是合并表。请参阅帖子“ Lua - 合并表? ”以获得这方面的帮助。

0 投票
1 回答
2112 浏览

binding - Lua 绑定:表与用户数据

在为 C++ 类进行 Lua 绑定时,我应该返回表还是用户数据对象?

有谁知道每种方法的优缺点?

0 投票
3 回答
21174 浏览

c++ - 从 C++ 遍历 Lua 表?

我正在尝试将表从Lua加载到 C++,但我无法正确处理。我很好地完成了第一次迭代,但是在第二次调用 lua_next 时它崩溃了。有任何想法吗?

Lua 文件:

C++ 文件 - 首先我这样做:

然后我尝试了参考手册

最后是这个:

自然 L 是一个 lua_State* ,我正在初始化它并解析文件。

编辑: 为了回应 Jesse Beder 的回答,我用记录器尝试了这段代码,但我仍然无法让它工作。

这给出了这个输出:

杰西,你所说的一切似乎都是正确的。但它仍然无法进入下一次迭代。

Edit2: 我试图将确切的代码复制到一个新项目中,跳过所有周围的类和我不想在这里和那里包含的东西。但在这里它没有,它只会在调用 lua_next 后存活下来。

Edit3: 我现在进一步缩小了范围。我使用hge作为我的 2D 引擎。我把之前的所有代码都放在了函数测试中:

据我了解,hge 对 lua 没有任何作用。 是我做的一个小测试的源代码。hge 1.81 的来源在这里

Edit4: 问题的大小已经失控,但无济于事。这是我能够将其简化为的最小代码。