lua - How do I turn a string into an argument? -


i using app touchlua.

i need turn string table argument. way table.

b = {} b[1] = "010,010,draw.blue"  function drawbuttons()    = 1,2       draw.fillrect(tonumber(string.sub(b[i],1,3)), tonumber(string.sub(b[i],5,7)), tonumber(string.sub(b[i],1,3))+10, tonumber(string.sub(b[i],5,7)),string.sub(b[i],9))    end end  drawbuttons() 

assuming want function eval print( eval( "draw.blue" ) ) equivalent print( draw.blue ), here quick , dirty version:

local function eval( s, e )   return assert( load( "return "..s, "=eval", "t", e or _g ) )() end  -- global variable draw = { blue = 2 } print( draw.blue ) print( eval( "draw.blue" ) ) 

if using older lua version 5.2, need loadstring instead of load , additional setfenv call. of course, instead of using load can parse string s , index table e or _g manually.

the above code assumes draw global variable. if want code work local variable need use debug library:

-- same local variable local localdraw = { blue = 3 } print( localdraw.blue )  -- needs debugging information, won't work stripped bytecode! local function locals()   local t, i, n, v = {}, 1, debug.getlocal( 2, 1 )   while n ~= nil     t[ n ], = v, i+1     n, v = debug.getlocal( 2, )   end   return t end print( eval( "localdraw.blue", locals() ) ) 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -