问题标签 [metatable]

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 投票
0 回答
52 浏览

lua - 使用多个子表跟踪表访问?

我的想法是您可以使用代理表来跟踪表访问,如下所示:http ://www.lua.org/pil/13.4.4.html

但是,如果我的数据结构不是一维表,而是看起来更像这样:

这可能吗?

0 投票
1 回答
40 浏览

lua - 在标签中附加元表

我有解析配置文件并生成表的解析器。

结果表可能类似于:

目标是有一个表,我可以从中读取设置,如果设置不存在,它会尝试从它的父级获取它。在顶层,它将从全局中获取。如果它不在全局范围内,它将返回 nil。

我像这样将元表附加到根目录:

但是,在请求密钥时它不起作用。情况似乎总是为零。如何从父表中读取?

0 投票
2 回答
91 浏览

lua - 元方法和类

我创建了一个与此处所示类似的函数,但在使用 __add 元方法时遇到了问题。我希望能够在类的两个实例上使用 __add 元方法,但它似乎工作的唯一方法是将元方法添加到实例的元表中。有没有办法可以将其设置为工作,以便我的类或其元表可以具有 __add 元方法并在将实例添加在一起时工作?

这是我想做的一个例子:

0 投票
1 回答
1165 浏览

lua - Lua _G 元表不工作

我正在尝试控制交互环境。这是我的尝试:

我希望在命令“x=3”之后看到“nope”。然而,它通过了。_G 不是空的吗,_G 的任何访问/更新都将通过定义的元方法?

0 投票
1 回答
201 浏览

sql - 检查列上是否存在函数

我一直在研究一个元表,它是 3 个表的集成(具有相同的数据库结构,但列名可能不同),我必须编写一个函数来检查列上是否有函数(to_Char()) . 还有很多列。因此,必须将语法泛化以搜索所有已写入或未写入 to_char 函数的列。

例子:

0 投票
1 回答
574 浏览

lua - 元表没有索引,即使使用了 setmetatable

根据 Lua 手册,setmetatable 的工作方式仍然与 Lua 5.0 相同。然而由于某种原因,当我在 Lua 5.1.5 和 5.3.1 中尝试此代码时,似乎未访问元表:

第一种情况有效,但是在第二种情况下,我收到错误提示未使用元表:

这也与方法调用运算符“:”无关,因为即使获取方法的值也不会转到元表。

0 投票
1 回答
108 浏览

function - 如何使用 __index 作为函数?

我试图模仿:

接着就,随即:

我做错什么了?

0 投票
1 回答
7074 浏览

lua - lua 表,重载 __tostring 的最简单方法

感谢所有讨论如何自定义打印表的 Lua stackoverflow 人员。经过大量阅读,我发布以下内容并询问 Lua 大师......

  • 这是最简单的方法吗?
  • 是不是太简单了(即以某种我不理解的方式损坏)?

请注意以下事项:

  • 允许不打印的私有字段(只需以“_”开头的名称)
  • 不会增加metatable每个对象的大小。

我的方法重写了默认tostring方法。

以上有点邪恶(对 pcall 的调用......不是我最自豪的代码,但是,嘿,它有效)。

无论如何,现在对我们可以使用以下自制对象系统定义的对象tostring进行方法调用:t:s()

这是 -- 的默认定义,:s()可以在子类中自定义。

例如

0 投票
2 回答
1870 浏览

lua - Lua getmetatable() 锁定表

在 lua 编程语言中,我知道可以通过元方法 __metatable 锁定 userdata 的元表,这样就没有人可以通过 getmetatable() 函数查看 userdata 的元表。但是,我仍然想在它被锁定后访问那个元表。所以,我的问题是,在用户数据的元表被锁定之后,是否仍然有可能(可能通过一些后门)仍然可以获得锁定的用户数据的元表,或者它是不可能的(如果是这样,那么原因是什么)?

编辑#1:我想知道这一点的动机是因为我试图找到一个进入 Roblox API 的后门,以便我可以更有效地编写我的游戏。

0 投票
1 回答
2222 浏览

class - Lua,哪种方式来做类表和实例化?

问题源自http://tylerneylon.com/a/learn-lua/ 教程包含代码:

这是教程中上述代码的结果:

一张额外的照片来更清楚地描述问题

尽管教程中的实现成功打印了“I saywoof”,但 myDog 的元表显然不像我们预期的那样理想。因此我的解决方案如下(不同之处在 Dog.new 中):

我的解决方案的结果:

我的代码打印出“I saywoof”并具有更精确的表结构。我想知道哪个实现是正确的,教程中的还是我的?另外,我想知道为什么教程中的代码会生成 Dog 的元表的迭代定义。