В Lua, вы не имеете конкретную реализацию класса, но вы можете использовать таблицу для его имитации. Чтобы сделать вещи проще, Lua дает некоторый "синтаксический сахар":
Объявить членом класса, вы можете использовать это полный эквивалент syntazes
function table.member(self,p1,p2)
end
или
function table:member(p1,p2)
end
или
table.member = function(self,p1,p2)
end
Теперь наступает сложная часть:
Вызов
table:member(1,2)
вы получите:
self=table,p1=1,p2=2
вызова
table.member(1,2)
вы получите:
self=1,p1=2,p2=nil
Другими словами, :
имитирует настоящий класс, а .
больше напоминает статическое использование. Хорошая вещь вы можете смешать эти 2 типа, так, например:
table.member(othertable,1,2)
дает
self=othertable,p1=1,p2=2
Таким образом, вы можете «одолжить» метод от других классов реализации множественного наследования
Да , вы ответили на свой вопрос –
Действительно, вэнь я пробовал, он не работал – Snakybo