Я работаю над проектом, который использует библиотеку среднего класса lua. Мои эксперименты показывают, что если класс включает миксин, который имеет функцию с тем же именем, что и функция класса, то вызов этой функции в экземпляре класса вызовет функцию class , а не mixin function.
Но я не мог понять почему, прочитав код среднего класса. Гарантировано ли поведение или зависит от какого-либо вызова или порядка включения?
EDIT: ниже добавлен минимальный код. Могу ли я положиться на myFoo: show (), отображающий «Foo»?
class = require('middleclass')
-- this is a middleclass mixin, not a class
Bar = {}
function Bar:show()
print("Bar")
end
-- class Foo implements 'show', and includes
-- the mixin which also implements 'show'
Foo = class('Foo')
Foo:include(Bar)
function Foo:show()
print("Foo")
end
-- class LittleFoo does not implement 'show',
-- but includes the mixin which implements 'show'
LittleFoo = class('LittleFoo')
LittleFoo:include(Bar)
-- program
myFoo = Foo:new()
myLittleFoo = LittleFoo:new()
myFoo:show() -- prints 'Foo'
myLittleFoo:show() -- prints 'Bar'