169 похожих чатов

Ребят, всем добрейший денечек! Вопрос: есть кастомная метатаблица. Она содержит заполненные

поля и переопределенное метаполе index, которое всегда возвращает что-то (в данном случае возвращает строку с оповещением, что неизвестное поле). В один момент мне надо, чтобы эта таблица вела себя как стандартная, т.е., если поле не существует, возвращала nil. Могу ли я просто сделать вот так:

self.states = setmetatable(self.states, {})

или мне нужно сделать что-то вроде:

self.states = setmetatable(self.states, getmetatable({}))

?

2 ответов

8 просмотров

Давай пример поширше. Метатаблица определяет поведение прицепленных к ней таблиц. Если у метатаблицы есть поле __index, те таблицы на которые навешена метатаблица будут искать поля через это поле.

Денис-Outsider Автор вопроса
Snusmumriken
Давай пример поширше. Метатаблица определяет пове...

Пример такой. Имеем метатаблицу: automationModeProperty.states = setmetatable({ [0] = "trim read", [1] = "read", [2] = "touch", [3] = "write", [4] = "latch" }, { __index = function(self, key) return "Unknown automation mode "..key end }) В этом же пространстве есть функция, которая обращается к таблице и, если там значение есть, устанавливает индекс по API. if self.states[state+direction] then state = state+direction end В данный момент таблица всегда не nil, так что этот код не имеет значения.

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
t.me/<username> и tg://user?id=<id> отваливаются по понятным причинам
Denis 🐍|👑 | darling! 🥰
7
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
Карта сайта