Skip to main content
Metatables, metafields, and namecall methods.

Available functions

getmetafield

Returns a raw metafield value from the target metatable. target may be any value, and field must be a string. The function does not call the metafield, does not invoke __index lookup, and returns nil when the metatable or field is missing.

getnamecallmethod

Returns the current namecall method string when one is available, otherwise nil. The function takes no arguments and does not compute a method name from a target object. get_namecall_method is an alias.

getrawmetatable

Returns the metatable currently attached to a target value, or nil when none is present. The function returns exactly one value and does not change the target. debug.getmethods is an alias for getrawmethods.

hasmetafield

Returns whether the target value has a non-nil raw metafield with the requested name. The function does not call the metafield, does not invoke __index lookup, and does not change readonly state.

hasmetatable

Returns whether the target value has a metatable. The function returns one boolean and does not return or change the metatable itself.

isreadonly

Returns whether a table is readonly. The argument must be a table, and the function does not change it.

makereadonly

Marks a table as readonly and returns no values.

makewriteable

Marks a table as writable and returns no values.

setnamecallmethod

Replaces the current namecall method string when a current namecall method exists. The method argument must be a string. If no current namecall method exists, the call returns no values and does not create one. set_namecall_method is an alias.

setrawmetatable

Sets the metatable for a target value and returns the original target. metatable must be a table or nil; nil clears the metatable. debug.setmethods is an alias for setrawmethods.

setreadonly

Sets whether a table is readonly and returns no values.