Разбор функции. Self.

Lance_Sterling

Известный
Автор темы
998
355
Версия MoonLoader
.026-beta
Чо за self, как работать с этим? Разберите мне функцию, как сделать такие классы. Откуда взялся self. Не очень шарю в этом
 
Решение
Ссылка на саму таблицу.

Lua:
local t = {
    name = "Bla Bla Car"
}

function t:sayHello()
    print('Hello,', self.name) -- Helloo, Bla Bla Car
    self -- ссылка на t
end

t:sayHello()

А по классам почитай тут

savvin

Известный
404
139
Ссылка на саму таблицу.

Lua:
local t = {
    name = "Bla Bla Car"
}

function t:sayHello()
    print('Hello,', self.name) -- Helloo, Bla Bla Car
    self -- ссылка на t
end

t:sayHello()

А по классам почитай тут
 
  • Влюблен
  • Нравится
Реакции: whyega52 и Lance_Sterling

Lance_Sterling

Известный
Автор темы
998
355
Ссылка на саму таблицу.

Lua:
local t = {
    name = "Bla Bla Car"
}

function t:sayHello()
    print('Hello,', self.name) -- Helloo, Bla Bla Car
    self -- ссылка на t
end

t:sayHello()

А по классам почитай тут
а есть еще что нибудь интереснее? а не просто имя)
 

whyega52

Eblang головного мозга
Модератор
2,884
2,859

Чо за self, как работать с этим? Разберите мне функцию, как сделать такие классы. Откуда взялся self. Не очень шарю в этом
лично я делаю классы следующим образом:
Lua:
local TestClass = {}
function TestClass:new() -- конструктор     
    local public
    local private
    private = {}       
        private.field = "class field"
        
    public = {}
        function public:getPrivateField() --[[
                тут можно было реализовать и через ".", а не ":", но я привык писать методы так
            ]]
            return private.field
        end

    setmetatable(public, self)
    self.__index = self
    return public
end


local currentClass = TestClasss:new() -- экземпляр класса
print(currentClass:getPrivateField()) -- вызов метода
 
Последнее редактирование:
  • Нравится
  • Влюблен
Реакции: YarikVL и Lance_Sterling