Описание тега metatable

Typically it refers to a feature of Lua which allows a programmer to change the behaviour of tables. The meaning may be dependant on other tags used with it.
1 ответ

Lua String Append

Поэтому я создал функцию, которую могут использовать все строки, и она называется append. local strmt = getmetatable("") function strmt.__index.append(self, str) self = self..str return self end Затем функция используется следующим образом: self = s…
07 мар '15 в 07:01
1 ответ

Lua Metatables для перехвата вызовов функций

Я пытаюсь использовать Lua Metatables для создания более симпатичного интерфейса с некоторыми внутренними функциями C++. Вот мой код, который работает до сих пор. (my.get а также my.set реализованы в C++) function setDefault(t) local mt = { __index …
12 авг '15 в 14:45
1 ответ

Почему вы можете установить __index равным таблице

Метаметод индекса может быть установлен равным таблицам. Из того, что я могу сказать foo.__index = function(self, k) return bar[k] end а также foo.__index = bar подобные. Почему объявление функций таким образом разрешено в этой ситуации?
02 июн '17 в 04:00
1 ответ

Lua - Как мне разбить мета-таблицы или сделать их непригодными для использования?

Так что в моей игре большинство эксплуататоров используют метатаблицы, чтобы остановить запреты, и я хотел бы снять их, я не использую их, и это только навредит эксплуататорам. Даже если это сломает другие части Луа, я могу и исправлю это, но это ну…
26 авг '18 в 02:28
1 ответ

Lua userdata: невозможно иметь одновременный доступ к массиву и методам

У меня была проблема этого парня: доступ к массиву пользовательских данных Lua и методы при этом когда я устанавливал __index метатаблицы моих пользовательских данных, он всегда вызывал метод получения вместо моих других методов, которые не были объ…
22 авг '16 в 21:53
1 ответ

Lua _G metatable не работает

Я пытаюсь контролировать интерактивную среду. Вот моя попытка: home: lua Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf, PUC-Rio > for n in pairs(_G) do io.write(n) end stringxpcallLUA_PATHtostringgcinfoloadlibosunpackrequiregetfenvsetmetatablenext_TR…
29 ноя '15 в 02:37
2 ответа

Метаметоды и классы

Я создал функцию, аналогичную показанной здесь, и у меня возникли проблемы с метаметодом __add. Я хочу иметь возможность использовать метаметод __add в двух экземплярах класса, но единственный способ, которым он работает, - добавить метаметоды в мет…
16 ноя '15 в 15:28
1 ответ

При использовании Metatables с Lua, есть ли способ для меня, чтобы определить, устанавливается ли значение или извлекается?

Я установил в моем скрипте систему "psuedo-oop", которая позволяет мне лучше взаимодействовать с данными пользователя из моего приложения. Моя система работает замечательно хорошо, за исключением того, что она не передает ссылки, она передает значен…
29 июл '12 в 00:32
1 ответ

Луа, 2 дим. массив метатабельный получение значения, когда "ноль"

local A = {{16}, {4,10}, {4,4,6}, {nil,2,-2,4}} -- nil local n = #A local G = {} local mt = {} mt.__index = function(self, i) -- when it goes throw for-loop it brakes when value in "A" is **nil** -- also brakes when i do print(G[4][1]) self[i] = set…
20 июл '16 в 00:06
1 ответ

Вызывать метатабельные методы внутри самого метатабельного

Есть ли способ вызывать метатабельные методы внутри самого метатаблицы? Например local t = {} local mt = { __index = { dog = function() print("bark") end, sound = function() t:dog() end } } setmetatable(t,mt) t:Sound() поднимает эту ошибку: попытка …
20 июл '16 в 21:57
0 ответов

Lua пользовательские операторы

Я пытаюсь создать оператора "!" который возвращает функцию печати. Я получаю следующую ошибку: line 15: attempt to call a number value stack traceback: t.lua:15: in main chunk [C]: ? Мой код ниже: local opTable = {} debug.setmetatable(0,{ _call = fu…
02 сен '14 в 17:27
2 ответа

Lua Metatables - вызов функций с синтаксисом двоеточия

У меня есть следующая проблема, кто-нибудь может мне помочь? comp = {} comp.__index = function(obj,val) if val == "insert" then return rawget(obj,"gr")["insert"] end return rawget(obj, val) end comp.new = function() local ret = {} setmetatable(ret, …
20 янв '13 в 00:42
1 ответ

Lua5.2: учебник по факелам дает переполнение стека на основе __index

Я давно хотел попасть в torch и начал с этого урока. Однако я столкнулся с переполнением стека при запуске кода специально с setmetatable функция. Я считаю, что это происходит из-за большого 50000 входного файла изображения, но я могу ошибаться. Я п…
14 мар '17 в 15:18
1 ответ

Ищет ли next() метаметод __pairs?

В общем, синтаксис: for k, v in pairs(t) do .... end эквивалентно: for k, v in next, t do .... end Но что, если t имеет __pairs Метаметод? Будет стандарт next() проверка функции для этого? Если нет, то не лучше ли всегда использовать pairs при переб…
11 апр '15 в 16:07
1 ответ

Lua - __newindex метаметод для существующего индекса?

Недавно я узнал о существовании метатаблиц в Луа, и я играл с ними, пока не пришла в голову мысль: можно ли будет использовать их, чтобы попытаться избежать "дубликатов" в таблице? Я искал и искал и до сих пор не мог найти то, что я ищу, так что я з…
12 авг '17 в 21:35
1 ответ

lua metatables - первый параметр в функции __index

Я пытаюсь изучить метатаблицы в Lua, и я наткнулся на следующий пример: local my_metatable = {} local my_tab = {} setmetatable(my_tab, my_metatable) -- Set the __index metamethod: my_metatable.__index = function (tab, key) print("Hello, " .. key) re…
27 окт '17 в 14:58
2 ответа

Lua ООП функция не вызывается?

Я использую Lua и LuaBridge с Allegro 5. Я решил портировать все графические объекты на Lua, но у меня возникают некоторые проблемы: Класс персонажа, который вызывается один раз Character = {sprite; AI} function Character:new() o = o or {} -- works!…
23 ноя '12 в 11:45
3 ответа

Как мы изменим способ отображения таблицы

Предполагая, что у меня есть кусок кода, такой как следующий aTable = {aValue=1} aTable_mt = {} print(aTable) Что я должен сделать, чтобы Lua напечатал что-то вроде aTable current aValue = 1 в отличие от table: 0x01ab1d2, До сих пор я пытался устано…
15 апр '15 в 00:07
1 ответ

Опираясь на комментарии к таблице с MySQL

Я создаю приложение, которое добавляет / удаляет / изменяет таблицы в базе данных MySQL. Некоторые таблицы имеют определенные роли приложения и должны быть помечены и идентифицированы как таковые приложением. Могу ли я полагаться на комментарии табл…
13 сен '11 в 02:17
1 ответ

Использование функций "Объект" в Lua?

Я хочу иметь возможность иметь "объекты" с определенными функциями, которые ссылаются на себя (я понятия не имею, как это назвать) в Lua. Я видел код того, что я пытаюсь сделать, но я никогда не понимал, что это на самом деле означает. Я попытался п…
15 сен '13 в 03:46