Я никогда не использовал Obj C
Тогда почему вы пытаетесь реализовать его заголовки на языке, который вообще не использует заголовки?
Заголовок!Что такое заголовок?
Заголовочные файлы на C-подобных языках хранят больше, чем просто имя.Они хранят константы и макрокоманды, аргументы метода и метода класса и возвращаемые типы, поля структуры и класса.По сути, содержимое файла заголовка является предварительным объявлением.Они возникли из-за необходимости выполнять одинаковые предварительные объявления для многих файлов.
Я не знаю, какие дополнительные правила и функции были добавлены в заголовочные файлы в Obj-C, но вы можете получить общиепонимание того, что они делают, по следующим ссылкам: 1 , 2 , 3 , 4 , причем последняя является наиболее точнойвкл.
Ответ на текущий вопрос
Lua - интерпретируемый язык с динамической типизацией.Он не выполняет проверку типов времени компиляции, и, как правило, программы Lua могут и должны быть структурированы таким образом, чтобы не требовалось предварительное объявление между файлами.Таким образом, для программиста нет никакого осмысленного способа создать, а для генератора и интерпретатора байт-кода lua - использовать файлы заголовков.
Lua вообще не имеет классов .Код, который вы опубликовали, является синтаксическим сахаром для назначения функции с немного отличающейся сигнатурой для таблицы, которая имитирует класс:
KARect.new = function( first_arg_is_self, _x, _y, _width, _height, _colorBack)
local new = setmetatable({}, {__index = first_arg_is_self})
return new
end
Здесь нет объявлений, только генерация анонимной функции иего присвоение полю в таблице.Другим частям программы не нужно ничего знать о конкретном поле, переменной или функции (которая хранится в переменной) заранее (в отличие от C).
Итак, ни одно объявление не означает ничего, что можно отделить от реализации.Конечно, вы можете сначала перечислить поля таблицы классов и сделать им фиктивные присваивания, но, опять же, Lua не будет использовать их.Если вы хотите дать подсказки людям, возможно, лучше написать отдельное руководство или поместить комментарии в реализацию.
У Lua ситуаций , где необходимы предварительные объявления для ссылки на локальные функции.Но такая ситуация не возникает в объектно-ориентированном коде, поскольку доступ ко всем методам осуществляется посредством ссылки на объект, и к моменту создания первого объекта сам класс обычно полностью создается.