yank divs, fix headers
(And that's how you document functions =)) |
(yank divs, fix headers) |
||
| Line 14: | Line 14: | ||
== Examples == | == Examples == | ||
=== Emulating | === Emulating RunScript() === | ||
assert(loadstring("DEFAULT_CHAT_FRAME:AddMessage(\"Hello, World!\")")) (); | |||
If an error occurs, the assert will trigger and automatically display the errorMessage return since assert()s second parameter is the error message to display. If it is successful, the function reference returned will also be returned out through the assert() call, and then be executed directly by the "()". | If an error occurs, the assert will trigger and automatically display the errorMessage return since assert()s second parameter is the error message to display. If it is successful, the function reference returned will also be returned out through the assert() call, and then be executed directly by the "()". | ||
=== Catching all errors === | |||
=== Catching all errors === | |||
local func, errorMessage = loadstring("DEFAULT_CHAT_FRAME:AddMessage(\"Hello, World!\")"); | local func, errorMessage = loadstring("DEFAULT_CHAT_FRAME:AddMessage(\"Hello, World!\")"); | ||
if(not func) then | if(not func) then | ||
''... do something with errorMessage and return out?'' | ''... do something with errorMessage and return out?'' | ||
end | end | ||
local success, errorMessage = | local success, errorMessage = pcall(func); | ||
if(not success) then | if(not success) then | ||
''... do something with errorMessage and return out?'' | ''... do something with errorMessage and return out?'' | ||
| Line 33: | Line 32: | ||
=== Returning values === | |||
=== Returning values === | |||
Since the code block is actually a function, you can return values out of it just like with a function. ''(ignoring error handling for now)'' | Since the code block is actually a function, you can return values out of it just like with a function. ''(ignoring error handling for now)'' | ||
local func = assert(loadstring("return 38+4, \"Hello, World!\";")); | local func = assert(loadstring("return 38+4, \"Hello, World!\";")); | ||
| Line 42: | Line 40: | ||
=== Protecting the global environment === | |||
=== Protecting the global environment === | |||
Lua can manipulate the environment that a function gets to see with [[API setfenv|setfenv]](). It is however important to remember that already-existing functions that the code is allowed to call retain their original environments, so e.g. giving protected code access to the standard [[API setglobal|setglobal]]() is probably not a good idea. | Lua can manipulate the environment that a function gets to see with [[API setfenv|setfenv]](). It is however important to remember that already-existing functions that the code is allowed to call retain their original environments, so e.g. giving protected code access to the standard [[API setglobal|setglobal]]() is probably not a good idea. | ||
| Line 68: | Line 65: | ||
=== Creating "real" functions through loadstring === | |||
=== Creating "real" functions through loadstring === | |||
local func = assert(loadstring([[ | local func = assert(loadstring([[ | ||
return function(a,b) | return function(a,b) | ||
| Line 85: | Line 79: | ||
Will result in "meaning_of_life_the_universe_and_everything" containing the number 42. | Will result in "meaning_of_life_the_universe_and_everything" containing the number 42. | ||
{{LUA}} | {{LUA}} | ||