Перейти к содержимому

Поиск по сайту

Результаты поиска по тегам 'setmetatable'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Путешествия Xytabich'а
  • Рецепты программирования

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Моды и плагины
    • Жалобы
    • Ивенты и конкурсы
    • Файлы
  • Общение
    • Задать вопрос
    • Обратная связь
    • Беседка
    • Шкатулка
  • Технический раздел
    • Корзина

Группы продуктов

Нет результатов для отображения.


Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

Найдено 3 результата

  1. Ktlo

    Метатаблицы, Lua

    Метатаблицы — это самые обыкновенные таблицы, содержащие функции, которые изменяют стандартное поведение операторов в Lua. Метатаблица в Lua может быть у любого значения, но только у каждой таблицы может быть своя метатаблица, у всех остальных же одна на всех. Так например у типа значения строки есть своя встроенная метатаблица, которая позволяет нам делать так: ("строка"):rep(10) В данной таблице присутствует поле __index. А у потоков метатаблицы нет, а надо бы!!! Но обо всём по порядку. Для установки и получения метатаблиц в Lua по стандарту существует 4 функции: setmetatable(table: table, metatable: table):table — это основная функция, которая позволяет установить таблице метатаблицу. Такая функция работает только с таблицами. getmetatable(value: value):table or value — возвращает метатаблицу, если есть или значение поля __metatable в метатаблице, если есть. Работает со всеми значениями. debug.setmetatable(value: value):boolean or table — устанавливает метатаблицу любому значению и обходит метаполе __metatable. Действительно мощная штука, вот почему её убрали в Open Computers . debug.getmetatable(value: value):table or value — возвращает метатаблицу, обходя поле __metatable.​ Также отсутствует в OC. Теперь, я думаю, можно приступить к самим метаметодам. Для своего, а может быть и вашего удобства я их разделю на четыре категории: Разное Математические Сравнение Битовые операторы
  2. У меня есть прототип объекта имеющего свои методы У другого объекта должны присутствовать все те же методы что и у первого объекта. Для создания объекта тараканы в голове сказали использовать метод метатаблицы __call Поначалу думал что сделаю что то вроде: --Здесь всё работает Object1 = setmetatable({},{ __call = function(self) return setmetatable({t=1},self) end }) Object1.__index = Object1 function Object1:method() print("method "..self.t) end obj = Object1() obj:method() --Вот тут уже нет Object2 = setmetatable(setmetatable({},Object1),{ __call = function(self) return setmetatable({t=2},self) end }) Object2.__index = Object2 function Object2:method2() self:method() end obj = Object2() obj:method2() и это будет работать. Но реальность меня огорчила...
  3. Мне надо сделать что-то вроде множественного наследования, но 1 раз. Что если установить для одной таблицы метатаблицу, а потом другой таблице установить это таблицу? local meta1={} local meta2={} local myTable={} meta2=setmetatable(meta2,meta1) myTable=setmetatable(myTable,meta2) --Будет ли myTable содержать все из meta1 и meta2?
×
×
  • Создать...