sách gpt4 ai đã đi

Sửa đổi toán tử # trong lua

In lại 作者:行者123 更新时间:2023-12-01 03:51:54 28 4
mua khóa gpt4 Nike

我在love2d引擎上做了一个无关紧要的lua控制台。我正在尝试升级元表以实现更多功能(配对功能,更改另一个表上的元表而不是目标表等),我正在制作的插件之一是 __changeindex修改现有索引时的事件。

为了做到这一点,我必须给用户一个不包含任何值的虚拟表,当他们尝试添加一些东西时,检查它是否已经在真实表中定义,如果它是然后调用 __changeindex ,如果不是,则调用 __newindex .这可以完美运行,但是这会导致许多其他 Lua 表函数停止工作(对于循环/getmetatable/setmetatable)。我已经为大多数这些问题制定了解决方法,它们工作正常,但我无法让#t 运算符工作,我想说

t1={1,2,3}
t2=setmetatable({},{__getn=function(self) return #t1 end})

然后#t2 应该真的返回#t1。我有什么办法可以做到这一点吗?

我现有的代码可以找到 đây

编辑:这是我的第一篇文章,所以如果我没有完全遵守发布规则,我深表歉意,我试过了 :) 如果有人有办法让假表和真表垃圾收集,我将不胜感激

1 Câu trả lời

KHÔNG__getn元方法。试试 __len反而。这仅适用于 Lua 5.2

您不能重载 # Lua 5.1 中表的运算符

您可以使用 userdata 创建代理对象:

t = newproxy(true)
getmetatable(t).__len = function()
return 5
kết thúc

print(#t) --> 5

但是请注意, newproxy函数是 undocumented .

关于lua - 修改lua中的#操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698648/

28 4 0
Bài viết được đề xuất: SQL - 范围是否在连续范围内
Bài viết được đề xuất: jquery - JQuery 上与其他几个相同类的空特定 div
Bài viết được đề xuất: jquery触发焦点和光标移动
Bài viết được đề xuất: javascript - 无法访问类似于 JSON 的数组内的数据。 JavaScript
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com