lua help with classes
BlitzMax Forums/BlitzMax Programming/lua help with classes
| ||
for some reason i cant get this to work using axe.lua mod
SimpleClass = {}
SimpleClass_mt = { __index = SimpleClass }
-- This function creates a new instance of SimpleClass
--
function SimpleClass:create()
local new_inst = {x = 3} -- the new instance
setmetatable( new_inst, SimpleClass_mt ) -- all instances share the same metatable
return new_inst
end
-- Here are some functions (methods) for SimpleClass:
function SimpleClass:className()
print( "SimpleClass" )
end
function SimpleClass:doSomething()
print( "Doing something" )
end
simple = SimpleClass:create()
simple:className()
in bmx using this for testing as i'm learning lua.
Import axe.lua
Function luaPrint( l:Byte Ptr )
For Local i:Int = 1 To lua_gettop( l ) ' The lua stack goes from 1 to lua_gettop( l ) -- it does not start at zero
Select lua_type( l, i ) ' gets the type of the variable
Case LUA_TBOOLEAN
Print lua_toboolean( l, i ) ' true/false
Case LUA_TNUMBER
Print lua_tonumber( l, i ) ' double
Case LUA_TSTRING
Print String.FromCString( lua_tostring( l, i ) ) ' print a string - lua_tostring is an auxiliary function
' you should use lua_tolstring in your own code for safety
Default
' other types exist, but for the sake of not writing too much code, they're excluded
End Select
Print "i "+i
Next
Return 0 ' zero arguments are returned -- if you pushed anything on the stack, you'd specify the
' amount of values you wanted to return
End Function
Local state:Byte Ptr = luaL_newstate( ) ' Create the state
lua_register( state, "print", luaPrint ) ' Register the function
lua_dofile( state, "luatest.lua" ) ' Execute a script
lua_close( state ) ' Close the state
'Input "Done>" ' Pause
however if i use the initial Table it works, but not if i try to create a new instance Working Lua script
SimpleClass = {}
SimpleClass_mt = { __index = SimpleClass }
-- This function creates a new instance of SimpleClass
--
function SimpleClass:create()
local new_inst = {x = 3} -- the new instance
setmetatable( new_inst, SimpleClass_mt ) -- all instances share the same metatable
return new_inst
end
-- Here are some functions (methods) for SimpleClass:
function SimpleClass:className()
print( "SimpleClass" )
end
function SimpleClass:doSomething()
print( "Doing something" )
end
SimpleClass:className()
|
| ||
| you know what, calling luaL_openlibs(state) would make a big difference |
| ||
| thank you split personality that is what the problem was |