Templating

Class templating is a feature commonly found in type-oriented programming languages like TypeScript or C++. While class templating is sometimes seen as having limited applications, it allows the creation of type-flexible classes that significantly reduces repetitive code.

Templating in Lua++ is quite simple and efficient. It works like so: tag where T is a type. To allow more than one type, one would separate each type name with a comma, such as: tag<T1, T2, ...>. A simple example of templating is shown below:

class Pair<T1, T2> {
  first: T1,
  second: T2,
  
  implicit constructor(f: T1, s: T2)
    self.first, self.second = f, s
  end
}

local pair: Pair<number, string> = { 3, "Three" }

Last updated