никогда раньше не понимал метатаблицы и класы, хотя многократно пытался, а сейчас у меня есть хотя бы базовое понимание, дальше уже документация в помощь. Очень интересное и познавательное видео!
Тема далеко не сложная, пока не начнётся реализация различных паттернов из других ЯП. Например, State Pattern. Всё-таки не так и просто перенести интерфейсы и абстракции на Luau.
По идее если нужно иметь доступ к ОБЪЕКТУ родительского класса, то можно передать этот объект и с ним уже взаимодействовать в скрипте. Правильно я думаю?
В родительский класс можно добавить конструктор если тебе нужно создавать объекты родительского класса, но если тебе объекты этого класса создавать не обязательно и ты этот класс будешь использовать исключительно для наследования то конструктор создавать не обязательно
@@XDmav Я уже придумал, достаточно просто вручную написать функцию для __index, которая будет брать недостающие данные из других таблиц. Вот пример кода: local tower = require(script.Parent.tower) local sniper = {} function sniper.new(owner) local tower_ex = tower.new(100, owner) local self = setmetatable({}, {__index = function(t, k) return sniper[k] or tower_ex[k] end}) self.name = "sniper" return self end function sniper:shot() print(self.name) print("pew!") end return sniper Что думаешь насчёт этого решения?
3:15 - 3:54 Тут ошибочка вышла. Там не 28 выходит, а 13. Когда доснимал этот момент скрипт взял из другого момента и не заметил.
никогда раньше не понимал метатаблицы и класы, хотя многократно пытался, а сейчас у меня есть хотя бы базовое понимание, дальше уже документация в помощь. Очень интересное и познавательное видео!
Лучший туториал по ООП на русскоязычном 👍
лучший туториал по ооп на ютубе
+
Спасибо за направление!!! Синтаксис тут очень непривычный, нужно будет все изучить про эти метатаблицы
Жду когда расскажешь про паттерны текста:)
Тема далеко не сложная, пока не начнётся реализация различных паттернов из других ЯП. Например, State Pattern. Всё-таки не так и просто перенести интерфейсы и абстракции на Luau.
На 3:49 prop1 будет 13, так как 8 + 5 = 13
упс да там из другого момента скрипт остался
Где ты был раньше!
Ну спс что объяснил.
Подарок на новый год?
Мог бы еще немного рассказать про типизацию для ООП, а то ролик прям мета короткий был
Я думаю про типизацию для ООП рассказать в отдельном ролике про типизацию в целом
@@XDmav будет круто!
@@XDmav дааа, это было-бы офигенно
ну кто не понял - метаметод
Т.е. в luau нет каких-либо фишек для ООП, которых нет в стандартном луа?
Ну типо того
Печально.
Я так понимаю, в родительском классе не должно быть метода конструктора?
По идее если нужно иметь доступ к ОБЪЕКТУ родительского класса, то можно передать этот объект и с ним уже взаимодействовать в скрипте. Правильно я думаю?
В родительский класс можно добавить конструктор если тебе нужно создавать объекты родительского класса, но если тебе объекты этого класса создавать не обязательно и ты этот класс будешь использовать исключительно для наследования то конструктор создавать не обязательно
@@XDmav Я уже придумал, достаточно просто вручную написать функцию для __index, которая будет брать недостающие данные из других таблиц. Вот пример кода:
local tower = require(script.Parent.tower)
local sniper = {}
function sniper.new(owner)
local tower_ex = tower.new(100, owner)
local self = setmetatable({}, {__index = function(t, k) return sniper[k] or tower_ex[k] end})
self.name = "sniper"
return self
end
function sniper:shot()
print(self.name)
print("pew!")
end
return sniper
Что думаешь насчёт этого решения?
О.О.П. - О нОвое видео вышло, Пара посмотреть
Го стрим по роблоксу с попищеками
чел не знает как кодить в итоге делает видео про ооп
О постоянный зритель
@XDmav зачем мне видео ха4а смотреть
Только не ООП :_(