Вопросы по теме '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 просмотров

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 просмотров

Вложенные метатаблицы 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