Garry's Mod Wiki

Revision Difference

Global.CompileString#514843

<function name="CompileString" parent="Global" type="libraryfunc">⤶ <description>⤶ This function will compile the code argument as lua code and return a function that will execute that code. ⤶ ⤶ Please note that this function will not automatically execute the given code after compiling it.⤶ </description>⤶ <realm>Shared and Menu</realm>⤶ <args>⤶ <arg name="code" type="string">The code to compile.</arg>⤶ <arg name="identifier" type="string">An identifier in case an error is thrown. (The same identifier can be used multiple times)</arg>⤶ <arg name="HandleError" type="boolean" default="true">If false this function will return an error string instead of throwing an error.</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="function">A function that, when called, will execute the given code. Returns nil if there was an error.</ret>⤶ <ret name="" type="string">The error string. Will be nil if there were no errors or the function handles errors (third argument is true).</ret>⤶ </rets>⤶ </function>⤶ ⤶ <example>⤶ <description>Code that will not compile, with ErrorHandling set to false.</description>⤶ <code>⤶ local code = "MsgN('Hi)"⤶ local func = CompileString(code, "TestCode", false)⤶ MsgN(func)⤶ </code>⤶ <output>TestCode:1: unfinished string near '&amp;lt;eof&amp;gt;' (this is not a script error - it is a returned string)</output>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>Code that will compile.</description>⤶ <code>⤶ local code = "MsgN('Hi')"⤶ local func = CompileString(code, "TestCode")⤶ ⤶ if func then -- Compile String returns nil if 3rd argument is true and code has errors.⤶ func()⤶ end⤶ </code>⤶ <output>Hi</output>⤶ ⤶ </example>⤶ ⤶ ⤶ ⤶ <example>⤶ <description>Compiled code with custom arguments; captured with the varargs identifier.</description>⤶ <code>⤶ local code = <page>⤶ local args = { ... } ⤶ print( unpack( args ) )⤶ print( args[ 2 ] + args[ 3 ])⤶ print( args[ 4 ] .. args[ 5 ])⤶ ⤶ local first, second = ...⤶ print( first, second )⤶ </page>⤶ local func = CompileString( code, "VarargCodeTest" )⤶ func( 1, 2, 3, "A", "B", "C" )⤶ </code>⤶ <output>⤶ ⤶ ```⤶ 1 2 3 A B C⤶ 5⤶ AB⤶ 1 2⤶ ```⤶ ⤶ </output>⤶ ⤶ </example>