Bad-Coder
@Bad-Coder
(null)

Как использовать метод как ссылку?

function Work:Begin(SourcePlayer)
    local Position = math.random(1, self.PosiblePositions)
    local RandomPosition = self.PosiblePositions[Position]

    self.Marker = self:NewPath(RandomPosition)

    addEventHandler("onMarkerHit", self.Marker, self:Begin)
end


Если использовать такой код, то будет следующая ошибка. (Function arguments expected near ')').
Через точку. (self.Begin).
То очевидно что self, не укажеться.
Как быть?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Ссылка на метод выглядит так:
Work.Begin

Двоеточие указывается только при объявлении и при соответствующем вызове (когда в качестве первого параметра нужно передать тот же объект self), но это просто синтаксический сахар. С тем же успехом можно объявлять функцию так:
Work.Begin = function(self, SourcePlayer)
А вызывать без двоеточия так:
self.Marker = self.NewPath(self, RandomPosition)
Разницы не будет в обоих вариантах.

Таким образом, ссылка на сам метод всегда выглядит, как Work.Begin, а вызов метода будет либо с двоеточием obj:Begin(player), либо без двоеточия obj.Begin(obj, player), но после вызова значением будет результат работы метода, а не ссылка на него.
Запись Work:Begin и self:Begin в качестве самостоятельного выражения не имеет смысла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы