Lua Терминология, связанная с ООП - PullRequest
0 голосов
/ 05 марта 2019

Быть в точку;Я делал Lua некоторое время, но так и не смог получить терминологию, поэтому я часами гуглял и не нашел окончательного ответа.

Относительно ООП в Lua,Используемая терминология:

  • Объект
  • Класс
  • Функция
  • Метод
  • Таблица

Вопрос в том, когда они правильно используются?Например, в приведенном ниже примере:

addon = { }
function addon:test_func( )
    return 'hi'
end

Q: Из моего понимания Lua и ООП addon - это таблица, однако я читал, что она может бытьобъект, но когда это технически объект?После того, как функция создана в этой таблице?

Q: test_func - это функция, однако я читал, что она становится «Методом», когда она помещается в таблицу (класс).

Q: Вся строка addon:test_func( ), я знаю, что двоеточие является оператором, но как называется весь текст строки?Сам класс?

Наконец, для этого примера кода:

function addon:test_func( id, name )

end

Q: Что такое id и name потому что я видел, как некоторые люди идентифицируют их как аргументы, но затем другие области классифицируют их как параметры, поэтому я придерживался параметров.

Короче говоря, какова правильная терминология для каждого из них?и когда они становятся такими, какие они есть?

Спасибо

1 Ответ

0 голосов
/ 05 марта 2019

Из моего понимания Lua и ООП, addon - это таблица, однако я читал, что это может быть и объект, но когда это технически объект?После создания функции в этой таблице?

Объект не является четко определенным термином.Я видел, что это определено (в C) как любое значение вообще.В Lua я бы посчитал это синонимом таблицы.Вы также можете определить его как экземпляр класса.

test_func - это функция, однако я читал, что она становится «методом», когда она помещается в таблицу (класс).

Ты в принципе прав.Метод - это любая функция, предназначенная для вызова с двоеточием.Метаметоды также являются методами, потому что, как и обычные методы, они определяют поведение таблиц.

Вся строка addon:test_func( ), я знаю, что двоеточие является оператором, но каков термин для всегострока набора текста?Сам класс?

Там нет названия для этого конкретного куска кода.Это просто часть определения метода.

Кроме того, я бы не назвал двоеточие оператором.Оператор будет плюсом в x + y, где x и y оба означают что-то сами по себе.В addon:test_func(), test_func имеет значение только внутри таблицы addon, и допустимо использовать двоеточие только при вызове или определении методов.Двоеточие на самом деле является формой синтаксического сахара, где реальным оператором является оператор индексации: [].Предполагая, что вы вызываете метод, расширение будет: addon['test_func'](addon).

Что такое id и name, потому что я видел, как некоторые люди идентифицируют их как аргументы, но затем другие области классифицируютих как параметры, поэтому я застрял с параметрами.

Это параметры.Параметры - это имена, которые вы объявляете в сигнатуре функции.Аргументы - это значения, которые вы передаете функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...