O'Reilly logo

Beginning Lua Programming by Kurt Jung, Aaron Brown

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required