Можно ли в runtime узнать является ли объект чьим-либо наследником или нет?
Создание приватных полей и методов похоже на один огромный костыль.
Почему если вы не понимаете зачем нужны те или иные фишки языка, то человек который их использует -- извращенец? Мне кажется вы никогда и ничего не писали на c++ или java. Основное приимущество слов private, public, protected и тп. это статическая или очень ранняя динамическая проверка наличия ошибок в программе. static нужен для создания общей памяти для всех классов. Также эти маркеры помогают размечать память объекта, но для луа это не актуально.
Насчёт извращенцев, когда вам потребуется наследовать не все методы из родительского класса?
Знаете что такое singleton? Как его создать используя вашу библиотеку? Как создать несколько singleton'ов в одном пакете?
Есть класс MyClass. Нужно создать метод класса, который создаёт новый объект класса MyClass и что-то с ним делает. Как это сделать?
Как переопределить операторы +, -, / и тп.?
Нельзя ли избавиться от двойной скобки, используя vararg?
local Player = Class({
...
})
Какой код сложнее?
local myObject = (function()
local secretString = "это приватная меременная без всяких заморочек"
return Class({
-- класс без конструктора
publicString = "а это публичная переменная!!!"
})
end)()
Как думаете почему создатели языка lua отказались от классов?
Public, private, protected это ущербные костыли, необходимые для того, чтобы мы выбирали какие поля и методы наследовать. У RccHD это все решается простой возможностью наследовать только то что мы хотим. Про остальной бред я даже говорить не хочу.
Библиотека для создания классов в Lua
в Библиотеки
Опубликовано: · Изменено пользователем eu_tomat
spoiler
Public, private, protected это ущербные костыли, необходимые для того, чтобы мы выбирали какие поля и методы наследовать. У RccHD это все решается простой возможностью наследовать только то что мы хотим. Про остальной бред я даже говорить не хочу.