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

JTJag

Пользователи
  • Публикации

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

  • Посещение

Сообщения, опубликованные пользователем JTJag


  1. У меня есть прототип объекта имеющего свои методы

    У другого объекта должны присутствовать все те же методы что и у первого объекта.

    Для создания объекта тараканы в голове сказали использовать метод метатаблицы __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()
    

    и это будет работать. Но реальность меня огорчила...

    OpenComputersErrorLog1.png

×
×
  • Создать...