问题标签 [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.
lua - 在标签中附加元表
我有解析配置文件并生成表的解析器。
结果表可能类似于:
目标是有一个表,我可以从中读取设置,如果设置不存在,它会尝试从它的父级获取它。在顶层,它将从全局中获取。如果它不在全局范围内,它将返回 nil。
我像这样将元表附加到根目录:
但是,在请求密钥时它不起作用。情况似乎总是为零。如何从父表中读取?
lua - 元方法和类
我创建了一个与此处所示类似的函数,但在使用 __add 元方法时遇到了问题。我希望能够在类的两个实例上使用 __add 元方法,但它似乎工作的唯一方法是将元方法添加到实例的元表中。有没有办法可以将其设置为工作,以便我的类或其元表可以具有 __add 元方法并在将实例添加在一起时工作?
这是我想做的一个例子:
lua - Lua _G 元表不工作
我正在尝试控制交互环境。这是我的尝试:
我希望在命令“x=3”之后看到“nope”。然而,它通过了。_G 不是空的吗,_G 的任何访问/更新都将通过定义的元方法?
sql - 检查列上是否存在函数
我一直在研究一个元表,它是 3 个表的集成(具有相同的数据库结构,但列名可能不同),我必须编写一个函数来检查列上是否有函数(to_Char()) . 还有很多列。因此,必须将语法泛化以搜索所有已写入或未写入 to_char 函数的列。
例子:
lua - 元表没有索引,即使使用了 setmetatable
根据 Lua 手册,setmetatable 的工作方式仍然与 Lua 5.0 相同。然而由于某种原因,当我在 Lua 5.1.5 和 5.3.1 中尝试此代码时,似乎未访问元表:
第一种情况有效,但是在第二种情况下,我收到错误提示未使用元表:
这也与方法调用运算符“:”无关,因为即使获取方法的值也不会转到元表。
function - 如何使用 __index 作为函数?
我试图模仿:
接着就,随即:
我做错什么了?
lua - lua 表,重载 __tostring 的最简单方法
感谢所有讨论如何自定义打印表的 Lua stackoverflow 人员。经过大量阅读,我发布以下内容并询问 Lua 大师......
- 这是最简单的方法吗?
- 是不是太简单了(即以某种我不理解的方式损坏)?
请注意以下事项:
- 允许不打印的私有字段(只需以“_”开头的名称)
- 不会增加
metatable
每个对象的大小。
我的方法重写了默认tostring
方法。
以上有点邪恶(对 pcall 的调用......不是我最自豪的代码,但是,嘿,它有效)。
无论如何,现在对我们可以使用以下自制对象系统定义的对象tostring
进行方法调用:t:s()
这是 -- 的默认定义,:s()
可以在子类中自定义。
例如
lua - Lua getmetatable() 锁定表
在 lua 编程语言中,我知道可以通过元方法 __metatable 锁定 userdata 的元表,这样就没有人可以通过 getmetatable() 函数查看 userdata 的元表。但是,我仍然想在它被锁定后访问那个元表。所以,我的问题是,在用户数据的元表被锁定之后,是否仍然有可能(可能通过一些后门)仍然可以获得锁定的用户数据的元表,或者它是不可能的(如果是这样,那么原因是什么)?
编辑#1:我想知道这一点的动机是因为我试图找到一个进入 Roblox API 的后门,以便我可以更有效地编写我的游戏。
class - Lua,哪种方式来做类表和实例化?
问题源自http://tylerneylon.com/a/learn-lua/ 教程包含代码:
这是教程中上述代码的结果:
尽管教程中的实现成功打印了“I saywoof”,但 myDog 的元表显然不像我们预期的那样理想。因此我的解决方案如下(不同之处在 Dog.new 中):
我的解决方案的结果:
我的代码打印出“I saywoof”并具有更精确的表结构。我想知道哪个实现是正确的,教程中的还是我的?另外,我想知道为什么教程中的代码会生成 Dog 的元表的迭代定义。