Chapter 8. Extending Lua's Behavior with Metamethods

You use metatables and metamethods mainly to create what can, loosely speaking, be described as user-defined types. For example, if you have defined a table that represents a number-like value, metamethods let you use arithmetical operators with it as though it really were a number. In this chapter, you learn how to do the following:

  • Use operators with types that they normally don't work with

  • Control what happens when a table is indexed or a table field is assigned to

  • Customize how a value is converted to a string

Using Concatenation and Arithmetical Operators on Tables

If you use tables as operands to the concatenation operator, you get the following error:

> A, B = {}, {}
> print(A .. B)
 stdin:1: attempt to concatenate global 'A' (a table value)
 stack traceback:
         stdin:1: in main chunk
         [C]: ?

There's a way to override this, though, so the concatenation operator is handled by a function that you define.

Get Beginning Lua Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.