我试图让我的 __index 方法在任何时候从该表中读取一个键时触发,但它显然没有触发,因为 A)读取的内容永远不会根据其预期的数学进行修改,并且 B)它的 print 语句永远不会触发。 请问我错过了什么? local scalar = 2 local scalar_template = { _ ...
我试图让我的 __index 方法在任何时候从该表中读取一个键时触发,但它显然没有触发,因为 A)读取的内容永远不会根据其预期的数学进行修改,并且 B)它的 print 语句永远不会触发。 请问我错过了什么? local scalar = 2 local scalar_template = { _ ...
这个问题对Defining logical operator implies in lua的问题有所参考。 以下代码工作正常。 下面的代码与上面的代码类似。 它用于逻辑与。 我想问的问题是:在这种情况下是否也需要and_left和and_right ? 需要它们是因为implies不可交换吗? 换句 ...
它将sr打印为3 。 预期答案是2 ,因为1*2等于2 。 为什么加法操作(元方法)没有从vars的元表中进入画面? ...
我不知道我做错了什么。 基本上代码如下所示:local t = setmetatable({}, {__pairs = function (self) print "Message from __pairs()" return function () ... ...
就像标题中问的那样,假设我想为table类型添加一个自定义方法,比如说table:printContent() ,Lua 有什么方法可以实现这一点吗? 我的意思是纯粹的 Lua。 例如,在 C# 中,您可以使用扩展来执行此操作:using System; namespace Main { ...
local t = {} local mt = setmetatable({ -- some meta method to know when a key is added or lost and prints a message }, t) 有没有办法做到这一点。 我 ...
我仍然是元表的新手,有些东西让我感到困惑 当我在元表中使用__index和__newindex元方法时,它们仅在我调用表的元素时被调用,如下所示: print(table[index]) -- this call the __index table[index] = value -- this c ...
大家好! 我一直在研究元方法,我发现了一些奇怪的东西! 我已经知道 Lua 文档中提供的所有元方法,如__add 、 __index 、 __newindex等......但我在论坛和这里的问题中看到人们使用__ev 、 __close 、 __group ,我从未见过其他任何地方这些元方法被使 ...
我正在尝试从其他应用程序的脚本中模拟某些功能的执行。 该应用程序有 Lua 库,其中包含 function list() ,它返回键是字符串 UUID 和值只是字符串的表,如local tbl = { "0000..-0000-..." = "someString", etc... } 。 该表可以 ...
我在这个网站http://lua-users.org/wiki/MetamethodsTutorial上找到了以下引用: 当在两个表上使用 == 运算符时调用 __eq,引用相等性检查失败,并且两个表具有相同的 __eq 元方法 (.)。 现在我用 Lua 5.3.5 对其进行了测试,这根本不是我观 ...
我正在学习如何使用 Lua 和 Love2d,我想使用元方法和元表创建 Vec2 class。 这是我到目前为止所拥有的: class.lua:(基础 class 文件) vec2.lua 在我的 main.lua 我有: 我得到这个错误: 错误:main.lua:12:尝试对本地“v1”(零 ...
我在一个旨在模仿类的表元表中重载了这样的乘法运算符。 如何检查函数 mt.__mul(o1, o2) 的函数调用中的哪个参数是 TestTable 类型? 我需要知道这一点才能正确实现重载乘法。 ...
我的目标 Get getmetatable返回分配给__metatable字段的函数的返回值。 码: local x, m = {}, {__metatable = function() return nil end}; setmetatable(x, m); io.write(" ...
我有一个 C++ 回调/函子系统的脚本,它可以使用字符串和/或变体调用任何“注册”的 C++ 函数。 在 lua 我可以做这样的事情...... 但是,我觉得我可以使用 __index 元方法来简化 lua ... 我希望通过使用 __index 元方法的以下实现来实现简化的 lua ...
我有共享一个具有__eq元方法的元表的Lua对象。 在此meta方法内部,我想在比较它们之前检查两个对象是否为同一对象。 类似于在Java中如何执行a == b || a.compareTo(b) a == b || a.compareTo(b) 。 但是,问题是通过在__eq内执行== ...
如果我有一个文件foo.lua : 在bar.lua我大量使用了foo.lua的代码,我一直foo.lua输入foo.add() ,而宁愿在bar.lua只写add() ,也可以添加以下代码: 但是当您包含对多个文件中的多个值进行别名时,这开始变得很痛苦。 在c ++中,有一种 ...
索引元方法可以设置为等于表。 从我所知道的 和 是相同的。 为什么在这种情况下允许以这种方式声明函数? ...
例如: 这样的事情可能吗? 我知道rawtostring方法不存在,但是有可能模拟这种行为,或者完全绕过它吗? ...
访问为不可变时调用__index : 当访问为不可变的索引时,将调用__newindex : 当访问密钥作为可变的evey时间时,是否存在可以调用的元方法,即不仅仅是密钥不存在? 我想创建一个行为,以便当用户在表中设置键时,它会调用本机方法,无论该键是否已存在。 ...
我创建了与此处显示的功能类似的功能,并且在使用__add元方法时遇到了麻烦。 我希望能够在一个类的两个实例上使用__add元方法,但是似乎可行的唯一方法是将元方法添加到实例的元表中。 有没有一种方法可以将其设置为起作用,以便我的类或其元表可以具有__add元方法并可以在将实例添加在一起时起作 ...