Прежде всего, точки с запятой в конце строк не являются необходимыми и, вероятно, являются плохой привычкой для написания кода на Lua.Во-вторых, я изменил require 'middleclass'
на require 'middleclass.init'
в обоих файлах и удалил module(..., package.seeall)
.После этого пример кода отлично работал на моей машине с Lua 5.1.4.
main.lua
require 'Person'
local testPerson = Person:new("Sally")
testPerson:speak()
Person.lua
require 'middleclass.init'
Person = class('Person')
function Person:initialize(name)
self.name = name
print("INITIALIZE: " .. self.name)
end
function Person:speak()
print('Hi, I am ' .. self.name ..'.')
end
Возможно, вы включаете файл middleclass.lua напрямую.Это не настроено для работы таким образом.Предполагается включить middleclass / init.lua .
Если вы используете два файла точно так, как показано выше, и разместите файлы, как показано ниже, это будет работать.
./main.lua
./Person.lua
./middleclass/init.lua
./middleclass/middleclass.lua