Userdata: Difference between revisions
From Legacy Roblox Wiki
Jump to navigationJump to search
>Sncplay42 Yep, it's back. |
>Camoy better format? |
||
Line 1: | Line 1: | ||
__TOC__ | |||
== | ==What is a Userdata?== | ||
A userdata is the type Lua uses for data structures in the underlying C program. There are no native Lua functions for handling those types, they must be handled via [[Metatables]]. All Roblox objects and events are userdata Lua type. | |||
==Using Userdatas== | |||
You can create a new userdata by passing true to the undocumented newproxy function. This userdata cannot be used for anything other than invoking functions via its metatable. | You can create a new userdata by passing true to the undocumented newproxy function. This userdata cannot be used for anything other than invoking functions via its metatable. | ||
<pre> | {{Example|<pre> | ||
local | local ud = newproxy(true) -- new userdata with an empty metatable | ||
getmetatable( | getmetatable(ud).__index = {Foo = "Bar"} -- index metamethod | ||
print(type( | print(type(ud), ud.Foo) | ||
Output: | Output: | ||
userdata: 0x631fc8 Bar | |||
</pre>}} | |||
</pre> | |||
[[Category:Data Types]] | [[Category:Data Types]] |
Revision as of 13:58, 31 October 2010
What is a Userdata?
A userdata is the type Lua uses for data structures in the underlying C program. There are no native Lua functions for handling those types, they must be handled via Metatables. All Roblox objects and events are userdata Lua type.
Using Userdatas
You can create a new userdata by passing true to the undocumented newproxy function. This userdata cannot be used for anything other than invoking functions via its metatable.
Example
local ud = newproxy(true) -- new userdata with an empty metatable getmetatable(ud).__index = {Foo = "Bar"} -- index metamethod print(type(ud), ud.Foo) Output: userdata: 0x631fc8 Bar