Это больше вопрос философии дизайна, поскольку я уже знаю, что вам не следует вызывать функцию с :
(объектно-ориентированный синтаксический сахар), если функция была определена без ключевого слова self
с помощью .
,Но проблема в том, что программисты, использующие созданную мной библиотеку, как правило, не читают документацию и сталкиваются с вопросом «как мне вызвать вашу функцию?», Поэтому я в конечном итоге всегда определяю функции, используя метод ниже:
local tbl = {};
function tbl:Add(a, b)
return a + b;
end
Я установил Luacheck (в VS Code), и он часто жалуется, когда я использую этот синтаксис и не использую ссылочное ключевое слово self
.Там написано: [luacheck] unused argument "self"
.Есть ли с этим проблемы с точки зрения производительности (или есть способ отключить Luacheck в VS Code)?
Я предпочитаю писать функции в этом стиле, а не в стиле ниже:
function tbl.Add(_, a, b)
return a + b;
end
Кажется, трудно добавить фиктивную переменную в начале списка параметров.
РЕДАКТИРОВАТЬ: Другая проблема в том, что если у вас есть много таблиц, которые реализуют функцию с тем же именем и хотят выполнять итерации по ним, но некоторые реализации не используют аргумент self
, а другие -?Было бы очень утомительно и плохо проектировать, чтобы проверить, к какому типу таблиц правильно вызывать функцию.
Какой стиль предпочтителен?В общем немного запутался по поводу этого предупреждения.о чем ты думаешь?Спасибо.