First of all, semicolons at the end of lines are not needed and are probably a bad habit to write Lua code. Secondly, I changed require 'middleclass' to require 'middleclass.init' in both files and deleted module(..., package.seeall) . After that, the sample code worked fine on my machine with 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
You can include the middleclass.lua file directly. He is not determined to work like that. The goal is to include the middle class /init.lua.
If you use two files exactly as shown above and place your files as shown below, this will work.
./main.lua ./Person.lua ./middleclass/init.lua ./middleclass/middleclass.lua
source share