Вопросы по теме 'metatable'
Мне нужны пояснения по Metatable .__ index
Я спросил ранее, почему мои методы для метатаблицы не были обнаружены Lua, и мне сказали, что, установив __index в мою метатаблицу, это решит проблему, поэтому я предположил, что метод при вызове выполнял поиск по индексу в метатаблице , но теперь...
8911 просмотров
schedule
08.10.2021
временная сложность метатаблицы в Lua при доступе
local cls = {base = "base"}
local ins = {}
cls.__index = cls
setmetatable(ins, cls)
Какова временная сложность доступа к ins.base ?
698 просмотров
schedule
30.09.2021
Указание обоих методов и оператора индекса в метатаблице Lua
Мне нужны объекты пользовательских данных для поддержки обоих методов и оператора индекса (с целочисленными индексами). Есть ли способ добиться этого в общей метатаблице без моделирования методов с помощью функции?
Я попытался объединить...
274 просмотров
schedule
22.10.2021
lua: как заставить getmetatable () возвращать ноль?
Я создаю объект пользователя на C, и как часть этого я создаю метатаблицу для переопределения таких методов, как __tostring , __index и т. Д. Однако я заметил, что можно получить метатаблицу объекта через getmetatable() . Кажется, что можно...
374 просмотров
schedule
25.10.2021
Метатаблицы Lua для перехвата вызовов функций
Я пытаюсь использовать Lua Metatables, чтобы сделать интерфейс красивее для некоторых внутренних функций C ++.
Вот мой код, который пока работает. ( my.get и my.set реализованы на C ++)
function setDefault(t)
local mt = {
__index =...
191 просмотров
schedule
14.10.2021
Удаление метатаблиц из таблицы в Lua
Я хочу «отцепить» метатаблицу от таблицы, и мне было интересно, если:
tbl = setmetatable(tbl, false) -- or nil
как правильно это сделать? Я не смог найти никакой информации о том, как это правильно сделать. Нужно ли мне использовать...
1861 просмотров
schedule
13.10.2021
Lua: расширение пользовательских данных в метатаблицах
Я пытаюсь найти подходящее решение для некоторых защищенных данных о сотрудниках, которые я хочу расширить, добавив дополнительные записи / данные для облегчения доступа.
Вот примерный пример того, что я пытаюсь сделать: Это работает, но мне это...
525 просмотров
schedule
09.09.2021
LUA - создать метатаблицу, в которой каждая подтаблица снова станет метатаблицей
но это точно запутает.
Я все еще очень новичок в LUA, и я еще мало работал с метатаблицами.
Мне нужно найти способ создать метатаблицу, которая запускает функцию редактирования значений. Это не проблема, если я останусь на одном уровне, поэтому...
78 просмотров
schedule
05.03.2022
Lua: интерпретация неопределенной переменной по ее имени
У меня есть функция foo , которая при определенных обстоятельствах может получать нулевые значения, т.е. foo(VarA) , а VarA не определена. Этот неопределенный VarA должен интерпретироваться как "VarA" , но я не могу вызвать foo("VarA") ,...
593 просмотров
schedule
08.05.2022
Что такое newproxy и чем он полезен?
Вчера я возился с Lua и наткнулся на функцию «newproxy».
http://wiki.roblox.com/index.php?title=Function_dump/Basic_functions#newproxy
Я как бы понимаю это, но я не уверен, насколько это полезно. Я знаю, что он создает пустой объект...
5010 просмотров
schedule
11.06.2022
Lua C API - получение метатаблицы из таблицы в стеке
Допустим, у нас есть таблица, которая была передана функции, и теперь она находится на вершине стека, например:
// -1 = table
Можно ли получить метатаблицу из этой таблицы в стеке? Я могу просто получить его с известным идентификатором...
1411 просмотров
schedule
06.08.2022
LuaJit — получить метатаблицу из модуля/пакета и назначить ее пользовательским данным
Скажем, у меня есть эта метатаблица для пользовательской структуры vector2_t , которая находится внутри модуля mymod , например:
local mymod = {}
local ffi = require("ffi")
local C = ffi.C
ffi.cdef[[
typedef struct
{
double x;...
419 просмотров
schedule
18.08.2022
Как регистрировать доступ/запись к вложенным таблицам?
В рамках проекта, над которым я работал, я хотел иметь возможность распечатывать каждый раз, когда к таблице осуществляется доступ или запись, а также то, что было доступно/записано в таблице. Просматривая это, я нашел это , в котором описывалось,...
48 просмотров
schedule
03.10.2022
Работает ли теперь метаметод Lua __gc для таблицы (Lua 5.2.1)?
Я был немного удивлен, потому что я читал ранее, что метаметод __gc вызывается только для пользовательских данных и никогда для таблиц. ( LuaFAQ: почему метаметоды __gc и __len не работают с таблицами? )
Но недавно я попробовал это и обнаружил,...
4451 просмотров
schedule
05.06.2023
Lua C API — сопоставление свойства с функцией
Можно ли передать функцию как свойство в Lua?
Прямо сейчас я могу иметь функции Get/Set, помещая их в виде таких полей:
lua_pushcfunction(L,L_Getter);
lua_setfield(L, -2, "GetValue");
lua_pushcfunction(L,L_Setter);
lua_setfield(L, -2,...
628 просмотров
schedule
10.03.2023
изменить # оператор в lua
Я сделал консоль lua на движке love2d, что не имеет значения. Я пытаюсь обновить метатаблицы, чтобы иметь возможность влиять на большее количество вещей (функция пар, изменение метатаблицы в другой таблице вместо целевой и т. д.), и одно из...
349 просмотров
schedule
07.02.2023
Вложенные метатаблицы Lua в C
В 3D-сцене у меня есть объект, положение которого я хотел бы переместить с помощью Lua.
eg. box.position.x = 10
box имеет метатаблицу ("Object") и позицию ("Vec"). Объект имеет __newindex и __index для вызова функций C NewIndexObject и...
335 просмотров
schedule
18.02.2023
Metatable не индексируется, хотя используется setmetatable
Согласно руководству по Lua, setmetatable работает так же, как и в Lua 5.0. Однако по какой-то причине, когда я пробую этот код в Lua 5.1.5 и 5.3.1, кажется, что доступ к метатаблице отсутствует:
ClassTable = {}
ClassTable.getString =...
479 просмотров
schedule
26.06.2023
Можно ли обойти __tostring так, как rawget/set обходит __index/__newindex в Lua?
Например:
local my_table = { name = "my table" }
local my_table_mt = {}
function my_table_mt.__tostring(tbl)
return "%s<%s>":format(tbl.name or "?", rawtostring(tbl))
end
Возможно ли что-то подобное? Я знаю, что метода rawtostring...
228 просмотров
schedule
16.09.2023
__tostring в пользовательских классах Lua
Следующий код должен напечатать «привет», однако он печатает расположение таблицы в памяти (например, «таблица: 052E67D0»). Пожалуйста, объясните, что мне здесь не хватает.
TestClass = {}
function TestClass:new(o)
o = o or {}...
319 просмотров
schedule
08.07.2023